實現思路:
第壹步:先定義壹個字符串,這個字符串SQL是由動態變量和其他的sql語句成分拼接組成。
第二步:直接執行?execute immediate SQL;
備註:以上方法是oracle提供的動態執行方法語句,直接使用就可以。
?VAR_DYNAMIC_SQL?:=?'INSERT?INTO?RP_COMFIRMED_EVENT_DETAIL(EVENT_ID,--ID
TRANS_TIME,--交易時間
TRANS_TYPE,--交易類型
TRANS_PROVINCE,--開戶省份
CCE_CSTNO,--客戶號
CCE_CERTTYPE,--證件類型
CCE_CERTNO,--證件號
CCE_AMT,--交易金額
CCE_RISK_SCORE,--不處理的風險分值
CCE_PAYEE_ACC,--付款人賬號
CCE_PAYEE_NAME,--付款人姓名
CCE_REC_NODE,--收款人開戶行
CCE_REC_ACC,--收款人賬號
CCE_REC_NAME,--收款人姓名
RULE_NAME,--規則名稱
CCE_RULE_NOTE,--規則描述
SCORE_RANGE--處理後的風險分值
)selectEVENT_ID,
SYS_CREATION_DATE,
GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T1.EVENT_TYPE,T1.USER_DEFINED_EVENT_TYPE),''eventType'')?AS?TRANS_TYPE,
--?get_province(IP_COUNTRY,IP_CITY)?AS?CCE_TRANSTYPE,get_vale_from_cd_p('||get_vale_from_cd1('13','5')||'),--開戶省份為自定義字段
USER_ID,
'||get_vale_from_cd1('4','4')||',--證件類型為自定義字段
'||get_vale_from_cd1('7','4')||',--證件號為自定義字段?要轉換成動態SQL
GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY),--通過匯率和幣種轉換
RISK_SCORE,
USER_ACCT_NUMBER,
'||get_vale_from_cd_g1(get_vale_from_cd_al)||',--付款人姓名
'||get_vale_from_cd1('11','5')||',--收款人開戶行?自定義字段?需轉換成動態SQL
EXT_ACCT_NUMBER,
EXT_ACCT_OWNER_NAME,
NVL(POLICY_RULE_ID,''FALLBACK_RULE'')?AS?RULE_NAME,
SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述
GET_SCORE_RANGE(RISK_SCORE)?AS?RISK_SCORE_RANGE
FROM?EVENT_LOG_REALTIME?T1
))';
execute?immediate?VAR_DYNAMIC_SQL;