动态存储过程实例:动态存储过程当然先得有一张表
例如 mdf_table
Table_name desc_table
Table1 aa
Table2 bb当然我们可以在表中加入更多的字段。我这个实例的主要功能是把table1到table2~~~中的数据做一个汇总,把结果放入到table1_out……中。
没有什么使用的功能,只能做一个流程上的演示。
我这里使用存储过程。
create or replace procedure test_pro
is
str_sql varchar(10000);
str_sql1 varchar(10000);
v_table_name mdf_table.table_name%type;
v_desc_table mdf_table.desc_table%type;
cursor mdf_cur is select table_name,desc_table from mdf_table;
begin
open mdf_cur;
LOOP
fetch mdf_cur into v_table_name,v_table_name;
exit when mdf_cur%notfound;
str_sql:='insert into '||v_table_name||'_out select * from '||v_table_name;
execute immediate str_sql;
str_sql1:=v_desc_table;
end loop;
close mdf_cur;
end;
当然这里没有写实际的数据操作。
如果我们数据库中有Table1和Table2等表的话就可以通过一个过程处理所有的表了。
例如 mdf_table
Table_name desc_table
Table1 aa
Table2 bb当然我们可以在表中加入更多的字段。我这个实例的主要功能是把table1到table2~~~中的数据做一个汇总,把结果放入到table1_out……中。
没有什么使用的功能,只能做一个流程上的演示。
我这里使用存储过程。
create or replace procedure test_pro
is
str_sql varchar(10000);
str_sql1 varchar(10000);
v_table_name mdf_table.table_name%type;
v_desc_table mdf_table.desc_table%type;
cursor mdf_cur is select table_name,desc_table from mdf_table;
begin
open mdf_cur;
LOOP
fetch mdf_cur into v_table_name,v_table_name;
exit when mdf_cur%notfound;
str_sql:='insert into '||v_table_name||'_out select * from '||v_table_name;
execute immediate str_sql;
str_sql1:=v_desc_table;
end loop;
close mdf_cur;
end;
当然这里没有写实际的数据操作。
如果我们数据库中有Table1和Table2等表的话就可以通过一个过程处理所有的表了。
解决方案 »
- oracle ora-12514错误求解答!!!!
- 如何获取Oracle某个库中的表的中文名称
- oracleRMAN恢复失败,求助
- 表中纵向资料向横向资料转换
- 这样的oracle sql语句如何来写,高手请进
- 各位大侠好,一个简单问题PL/SQL的Select语句问题
- 我的怎么连接不上oracle数据库呀!
- oracle升级问题!有经验的高手请进!
- 我可以把目录:‘C:\My Documents\002.pdf'加到表里吗?怎么加
- can i update two columns at one time?
- 当Oracle数据库的一个表有新数据添加时怎么把这条数据传给一个c#程序
- ======急救====:我的全文索引出问题了!
--首先还是顶楼主下
--这里指出点问题,和一些不明白的create or replace procedure test_pro
is
str_sql varchar(10000);
str_sql1 varchar(10000);
v_table_name mdf_table.table_name%type;
v_desc_table mdf_table.desc_table%type;
cursor mdf_cur is select table_name,desc_table from mdf_table;
begin
open mdf_cur;
LOOP
fetch mdf_cur into v_table_name,v_table_name; --指出一个错误,这里是不是写错了 最好一个变量应该是v_desc_table
exit when mdf_cur%notfound;
str_sql:= 'insert into '||v_table_name|| '_out select * from '||v_table_name; --这里哪里做了把table1到table2~~~中的数据做一个汇总?
execute immediate str_sql;
str_sql1:=v_desc_table; --这句话在此有何意义?
end loop;
close mdf_cur;
end;
create or replace procedure test_pro
is
str_sql varchar(10000);
str_sql1 varchar(10000);
v_table_name mdf_table.table_name%type;
v_desc_table mdf_table.desc_table%type;
cursor mdf_cur is select table_name,desc_table from mdf_table;
begin
open mdf_cur;
LOOP
fetch mdf_cur into v_table_name,v_table_name;
exit when mdf_cur%notfound;
str_sql:= 'insert into '||v_table_name|| '_out select * from '||v_table_name;
execute immediate str_sql;
str_sql1:=v_desc_table;
end loop;
close mdf_cur;
fetch mdf_cur into v_table_name,v_table_name; --应该改成这样吧
fetch mdf_cur into v_table_name,v_desc_table;