oracle的存储过程里怎样调用动态变量
来源:百度知道 编辑:UC知道 时间:2024/05/11 01:41:18
create or replace procedure SYSRINGALL_TEST is
all_tmp_name char(30);
all_name char(30);
begin
if all_tmp_name is null then
select 'ring_all_old_'||to_char(sysdate,'yyyymm')||'_tmp' into all_tmp_name from dual;
end if;
if all_name is null then
select 'ring_all_old_'||to_char(sysdate,'yyyymm') into all_name from dual;
end if;
------由ALL进TMP---------
insert into all_tmp_name
select * from all_name;
commit;
end SYSRINGALL_TEST;
==========================
其实就是想动态生成ring_all_old_200606和ring_all_old_200606_tmp
这两个表名让下面使用
但老是编译出错,如果把下面改成
insert into ring_all_old_200606_tmp
select * from ring_all_old_200606;
就能编译通过.
请问该怎样改啊?
来看我来错地方啦~~~baidu里面都是娱乐为主的!!!
all_tmp_name char(30);
all_name char(30);
begin
if all_tmp_name is null then
select 'ring_all_old_'||to_char(sysdate,'yyyymm')||'_tmp' into all_tmp_name from dual;
end if;
if all_name is null then
select 'ring_all_old_'||to_char(sysdate,'yyyymm') into all_name from dual;
end if;
------由ALL进TMP---------
insert into all_tmp_name
select * from all_name;
commit;
end SYSRINGALL_TEST;
==========================
其实就是想动态生成ring_all_old_200606和ring_all_old_200606_tmp
这两个表名让下面使用
但老是编译出错,如果把下面改成
insert into ring_all_old_200606_tmp
select * from ring_all_old_200606;
就能编译通过.
请问该怎样改啊?
来看我来错地方啦~~~baidu里面都是娱乐为主的!!!
实现思路:
第一步:先定义一个字符串,这个字符串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,--付款人账号