首页 > 技术文章 > Oracle 绑定多变量 批量插入

ningxu 2013-12-12 17:58 原文

类型1:多变量绑定,最佳方法

declare
i number;
j number;

Cursor my_cursor is select role_id,business_id from FUNC_BUSI;
begin
   open my_cursor;
    LOOP
    fetch my_cursor into i,j;
     exit when my_cursor%NOTFOUND;
 insert into SEC_ROLE_GRANT (
   ROLE_GRANT_ID,ROLE_ID,ENT_ID)
values (kf_contact.sec_role_grant$seq.nextval,i,j);
  end loop;
  close my_cursor;
end;

说明:表1--FUNC_BUSI,保存变量的组合数据,即最终要导入的数据;

        表2--SEC_ROLE_GRANT,最终要插入的表。

多变量时需要用到游标。

类型2:单变量绑定,使用数组插入

declare
TYPE i IS varray(50) of NUMBER;
var_array i:=i(1,2);
begin
 
  for  i in 1..var_array.count LOOP
  insert into kf_contact.sec_role_grant (
   ROLE_GRANT_ID,
   ROLE_ID,
   PRIV_ID,
   ENT_ID
)
values (
   kf_contact.sec_role_grant$seq.nextval,
   i,
   1,
   1008);
  end loop;

end;

类型3:多变量绑定,但需要手动一条条插入数据

insert into sec.sec_role_grant
  (ROLE_GRANT_ID,
   ROLE_ID,
   PRIV_ID,
   ENT_ID)
values
  (sec.sec_role_grant$seq.nextval,
   &role_id,
   1,
   &business_id);

原创:转载请说明出处及作者。

推荐阅读