ITPub博客

首页 > 数据库 > 数据库开发技术 > 批量绑定与本地动态SQL execute immediate的结合

批量绑定与本地动态SQL execute immediate的结合

原创 数据库开发技术 作者:yaanzy 时间:2006-02-28 13:19:14 0 删除 编辑

批量处理不仅可以和静态sql组合,也可以和动态sql结合使用,但是在8i和9i中,其具体处理方式有些差异

[@more@]

1> 在8i环境下

create table aaa (a1 number);

create type vcarray as table of number;

create or replace procedure p_demo is
p_value vcarray := vcarray();
begin
for i in 1..10000
loop
p_value.extend;
p_value(i) := i;
end loop;

execute immediate
'begin
forall j in 1..10000
insert into aaa values (:x(j));
end;'
using p_value;

commit;

end p_demo;

注意:1、使用数组类型要先初始化p_value vcarray := vcarray()
2、不要在程序内定义PL/SQL表类型的p_value,因为这里使用绑定变量时
不允许使用PL/SQL变量,只允许使用SQL变量

2> 在9i以上环境下,除了可以用8i的方法,还可以用:

create table aaa (a1 number);

create or replace procedure p_demo is
p_value dbms_sql.Number_Table;
begin
for i in 1..10000
loop
p_value(i) := i;
end loop;

forall j in 1..10000
execute immediate 'insert into aaa values (:x)'
using p_value(j);

commit;

end p_demo;
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3898/viewspace-817435/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    108
  • 访问量
    761586