PLSQL批量操作及动态SQL.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
批量绑定: 批量绑定是指单条SQL操作能传递所有PLSQL表的数据。通过批量绑定,可以极大地加快数据处理速度,提高应用程序性能。批量绑定语句forall主要针对insert、update、delete等语句,forall绑定的表必须是PLSQL表,即单列多行的数据结构(类似于c语言中的数组),如:索引表、嵌套表、变长数组,不能是记录表。 2、批量绑定语句forall的语法:(一次次的提取数据) 语法一:(i作为PLSQL表的下标被引用) forall i in lower..upper sql_statement; 解释:对PLSQL表中下标为i(取值范围为lower和upper之间,包括边界,i可以是其他满足命名规则的名字)的数据进行批量绑定。 例子: DECLARE TYPE int_table_type IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;--声明索引表类型,其中的数 --据类型为integer,索引表类型是PLSQL表类型的一种 TYPE varchar2_table_type IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER; --声明索引表类型, --其中的数据类型为varchar2(20) name_table varchar2_table_type;--用声明的索引表类型声明变量,即声明一个PLSQL表 id_table int_table_type; --用声明的索引表类型声明变量,即声明另一个PLSQL表 BEGIN FOR i IN 1..100000 LOOP id_table(i) := i;--为PLSQL表赋值 name_table(i) := aaa || i;--为另一个PLSQL表赋值 END LOOP; FORALL i IN 1..100000 INSERT INTO intest VALUES(id_table(i),name_table(i));-- 将PLSQL表 --id_table和name_table下标为i的数据插入到intest表中,这里i从1到100000 END; / 语法二:(用于下标不连续的情况) forall i in indices of collection [between lower and upper] sql_statement; 解释:对PLSQL表中下标为i(i的取值范围为indices取得的collection(PLSQL表)的所有下标值,同时i在范围为lower到upper之间,包括边界)的数据进行批量绑定。 例子: DECLARE TYPE int_table_type IS TABLE OF binary_integer INDEX BY BINARY_INTEGER; id_table int_table_type; BEGIN FOR i IN 1..10 LOOP id_table(i) := i; END LOOP; FORALL i IN INDICES OF id_table BETWEEN 1 AND 5 DELETE FROM intest WHERE iid = id_table(i); --对PLSQL表id_table下标为i(i取PLSQL表id_table的下标值,同时满足大于等于1小于等于5)的数据进行 --批量绑定同时进行相关操作,这里表intest的iid等于id_table(1..5)的数据会被删 END; / 语法三:(用于处理重复数据) forall i in values of index_collection sql_statement; 解释:对PLSQL表中下标为i(i的取值范围为index_collection表中的值)的数据进行批量绑定。 例子: DECLARE TYPE int_table_type IS TABLE OF binary_integer INDEX BY BINARY_INTEGER; TYPE varchar2_table_type IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER; name_table varchar2_table_type; id_table int_table_type; BEGIN id_table(1):=5; id_table(5):=1; name_table(5):=aa5; name_table(1):=aa4; name_table(3):=aa4; FORALL i IN

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档