oracle的存储过程里怎样调用动态变量
答案:2 悬赏:20 手机版
解决时间 2021-03-01 20:43
- 提问者网友:富士山上尢
- 2021-03-01 11:04
oracle的存储过程里怎样调用动态变量
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-03-01 12:23
实现思路:
第一步:先定义一个字符串,这个字符串SQL是由动态变量和其他的sql语句成分拼接组成。
第二步:直接执行 execute immediate SQL;
备注:以上方法是oracle提供的动态执行方法语句,直接使用就可以。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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--处理后的风险分值
)select
第一步:先定义一个字符串,这个字符串SQL是由动态变量和其他的sql语句成分拼接组成。
第二步:直接执行 execute immediate SQL;
备注:以上方法是oracle提供的动态执行方法语句,直接使用就可以。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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--处理后的风险分值
)select
全部回答
- 1楼网友:迟山
- 2021-03-01 13:27
实现思路:
第一步:先定义一个字符串,这个字符串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--处理后的风险分值
)select
event_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;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯