程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle的存儲過程裡怎樣調用動態變量

oracle的存儲過程裡怎樣調用動態變量

編輯:Oracle數據庫基礎
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;

就能編譯通過.

請問該怎樣改啊?

create or replace procedure SYSRINGALL_TEST is
all_tmp_name char(30);
all_name char(30);
tmp_str varchar(2000);
begin
if all_tmp_name is null then
select 'ring_inkfish_'||to_char(sysdate,'yyyymm')||'_tmp' into all_tmp_name from dual;
end if;
if all_name is null then
select 'ring_inkfish_'||to_char(sysdate,'yyyymm') into all_name from dual;
end if;
tmp_str :='insert into '||all_tmp_name||' select * from '||all_name;
execute immediate tmp_str;
commit;
end SYSRINGALL_TEST;

嘿嘿,不容易啊!!自己搞定啦!希望能對大家有幫助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved