pl/sql forall-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3977569
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2007-01-25 11:30:32

the forall keyword can improve the performance of insert, update, or delete statements that reference collection elements.

for example, the following pl/sql block increases the salary for employees whose manager's id number is 7902, 7698, or 7839, both with and without using bulk binds:

declare
   type numlist is varray (100) of number;
   id numlist := numlist(7902, 7698, 7839);
begin

-- efficient method, using a bulk bind
   forall i in id.first..id.last   -- bulk-bind the varray
      update emp_tab set sal = 1.1 * sal
      where mgr = id(i);

-- slower method, running the update statements within a regular loop
   for i in id.first..id.last loop
      update emp_tab set sal = 1.1 * sal
      where mgr = id(i);
   end loop;
end;


without the bulk bind, pl/sql sends a sql statement to the sql engine for each employee that is updated, leading to context switches that hurt performance.

if you have a set of rows prepared in a pl/sql table, you can bulk-insert or bulk-update the data using a loop like:

forall i in emp_data.first..emp_data.last
    insert into emp_tab values(emp_data(i));

ref: oracle document (pl/sql procedures and packages)
阅读(2022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图