欢迎来到天天文库
浏览记录
ID:34725387
大小:98.68 KB
页数:5页
时间:2019-03-10
《plsql批量操作与动态sql》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1、批量绑定:批量绑定是指单条SQL操作能传递所有PLSQL表的数据。通过批量绑定,可以极大地加快数据处理速度,提高应用程序性能。批量绑定语句forall主要针对insert、update、delete等语句,forall绑定的表必须是PLSQL表,即单列多行的数据结构(类似于c语言中的数组),如:索引表、嵌套表、变长数组,不能是记录表。2、批量绑定语句forall的语法:(一次次的提取数据)语法一:(i作为PLSQL表的下标被引用)foralliinlower..uppersql_statement;解释:对PLSQL表中下标为i(取值范围为lower和upper之间,
2、包括边界,i可以是其他满足命名规则的名字)的数据进行批量绑定。例子:DECLARETYPEint_table_typeISTABLEOFINTEGERINDEXBYBINARY_INTEGER;--声明索引表类型,其中的数--据类型为integer,索引表类型是PLSQL表类型的一种TYPEvarchar2_table_typeISTABLEOFVARCHAR2(20)INDEXBYBINARY_INTEGER;--声明索引表类型,--其中的数据类型为varchar2(20)name_tablevarchar2_table_type;--用声明的索引表类型声明变量,即声明
3、一个PLSQL表id_tableint_table_type;--用声明的索引表类型声明变量,即声明另一个PLSQL表BEGINFORiIN1..100000LOOPid_table(i):=i;--为PLSQL表赋值name_table(i):='aaa'
4、
5、i;--为另一个PLSQL表赋值ENDLOOP;FORALLiIN1..100000INSERTINTOintestVALUES(id_table(i),name_table(i));--将PLSQL表--id_table和name_table下标为i的数据插入到intest表中,这里i从1到100000END;/
6、语法二:(用于下标不连续的情况)foralliinindicesofcollection[betweenlowerandupper]sql_statement;解释:对PLSQL表中下标为i(i的取值范围为indices取得的collection(PLSQL表)的所有下标值,同时i在范围为lower到upper之间,包括边界)的数据进行批量绑定。例子:DECLARETYPEint_table_typeISTABLEOFbinary_integerINDEXBYBINARY_INTEGER;id_tableint_table_type;BEGINFORiIN1..10LOO
7、Pid_table(i):=i;ENDLOOP;FORALLiININDICESOFid_tableBETWEEN1AND5DELETEFROMintestWHEREiid=id_table(i);--对PLSQL表id_table下标为i(i取PLSQL表id_table的下标值,同时满足大于等于1小于等于5)的数据进行--批量绑定同时进行相关操作,这里表intest的iid等于id_table(1..5)的数据会被删END;/语法三:(用于处理重复数据)foralliinvaluesofindex_collectionsql_statement;解释:对PLSQL表中
8、下标为i(i的取值范围为index_collection表中的值)的数据进行批量绑定。例子:DECLARETYPEint_table_typeISTABLEOFbinary_integerINDEXBYBINARY_INTEGER;TYPEvarchar2_table_typeISTABLEOFVARCHAR2(20)INDEXBYBINARY_INTEGER;name_tablevarchar2_table_type;id_tableint_table_type;BEGINid_table(1):=5;id_table(5):=1;name_table(5):='aa5
9、';name_table(1):='aa4';name_table(3):='aa4';FORALLiINVALUESOFid_tableinsertintointestvalues(id_table(i),name_table(i));--对PLSQL表id_table和name_table下标为i(i取PLSQL表id_table中的值)的数据进行批量绑定,同时进行--操作。这里会将id_table(1)、id_table(5)、name_table(1)、name_table(5)插入到intest表中END;/3、批量
此文档下载收益归作者所有