- 浏览: 270120 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
yh008:
不错的工具类。 版面需要调整下,有些内容看不到了,只能复制粘贴 ...
Spring 优秀工具类盘点,第 1 部分: 文件资源操作二 -
手心的水滴:
function Foo() { (function( ...
js 两个小括号 ()() 的用法 -
showthesunli:
博主说了这么多,我来说说我的想法,不晓得对不对总结一下,如下代 ...
js 两个小括号 ()() 的用法 -
aqbzwxd:
就是这种盲目无原理依据的研究测试弄晕了我, 有必要这么做吗? ...
js 两个小括号 ()() 的用法 -
wst0350:
多谢
oracle 触发器
批量绑定是oracle9i新增加特性,是指执行单次SQL操作能传递所有集合元素的数据,通过批量绑定可以极大的加快数据处理速度,提高应用程序的性能,批量绑定是使用bulk collect子句和forall语法完成,其他bulk collect子句用于取得批量数据,该子句只能用于select语句、fetch语句和DML返回子句,而forall语句只适用于批发批量的DML操作。
一、forall语句
当要在PL/SQL应用程序中执行批量insert、update、delete操作时,可以使用forall语句,在oracle9i之前,当使用forall语句时,必须具有连续的元素,而从oracle9i开始,通过使用新增的indices of子句和values of子句,可以使用不连续的集合元素,注意for语句是循环语句,而forall可不是循环语句,从oracle10g开始,forall语句有是三种执行方法,如下所示;
1、语法一:
forall index in lower_bound..upper_bound
sql_statement;
如上所示:index是隐含定义的整数变量(将作为集合元素下标被引用);lower_bound和upper_bound分别是集合元素的上、下界。
2、语法二:
forall index in indies of collection
[between lower_bound and upper_bound]
如上所示:indices of子句用于指定只取得对应中的collection集合元素下标的index值。
3、语法三:
forall index in values of index_collection
sql_statement;
如上所示:其中values of子句用于指定index值从集合变量index_collection中取得,注意Oracle9i只能使用第一种方法,以下通过示例说明:
(1)、在insert语句上使用批量绑定
当使用批量绑定为数据库表插入数据时,首先需要给集合元素赋值,然后使用forall语句执行批量绑定插入操作,示例如下:
declare type id_table_type is table of number(6) index by binary_integer; type name_table_type is table of varchar2(10) index by binary_integer; id_table id_table_type; name_table name_table_type; begin for i in 1..10 loop id_table(i):=i; name_table(i):='name'||to_char(i); end loop; forall i in 1..id_table.count insert into demo values(id_table(i),name_table(i)); end;
(2)、在update语句上使用批量绑定
当使用批量绑定为更新数据时,首先需要给集合元素赋值,然后使用forall语句执行批量绑定修改操作,示例如下:
declare type id_table_type is table of number(6) index by binary_integer; type name_table_type is table of varchar2(10) index by binary_integer; id_table id_table_type; name_table name_table_type; begin for i in 1..10 loop id_table(i):=i; name_table(i):='yanglin'|| to_char(i); end loop; forall i in 1..id_table.count update demo set name=name_table(i) where id=id_table(i); end;
(3)、在delete语句上使用批量绑定
当使用批量绑定删除数据时,首先需要给集合元素赋值,然后使用forall语句执行批量绑定删除操作,示例如下:
declare type id_table_type is table of number(6) index by binary_integer; id_table id_table_type; begin for i in 1..10 loop id_table(i):=i; end loop; forall i in 1..id_table.count delete from demo where id=id_table(i); end;
(4)、在forall语句上使用部分集合元素
当使用forall语句进行批量操作时,即可以使用集合的所有元素,也可以使用集合的部分元素,示例如下:
declare type id_table_type is table of number(6) index by binary_integer; id_table id_table_type; begin for i in 11..20 loop id_table(i):=i; end loop; forall i in 15..20 delete from demo where id=id_table(i); end;
(4)、在forall语句上使用indices of子句
indices of子句是oracle10g新增加的特征,该子句用于跳转null集合元素,示例如下:
declare type id_table_type is table of number(6); id_table id_table_type; begin id_table:=id_table_type(11,null,12,null,13,null); forall i in indices of id_table delete from demo where id=id_table(i); end;
二、bulk collect子句
bulk collect用于取得批量数据,它只适用于select into语句、fetch into语句和DML返回子句,通过使用该子句可以将批量数据存放到PL/SQL集合变量中,其语法如下:
... bulk collect into collection_name[,collection_name].....
如上所示:collection_name用于指定集合变量名
1、在select into语句使用bulk collect语句,示例如下:
declare type temp_table_type is table of cip_temps%rowtype index by binary_integer; temp_table temp_table_type; begin select * bulk collect into temp_table from cip_temps where id=10; for i in 1..temp_table.count loop dbms_output.put_line(temp_table(i).name ||':'|| temp_table(i).address||':'||temp_table(i).age); end loop; end;
2、在DML返回子句中使用bulk collect语句,示例如下:
执行DML操作时会改变数据库数据,为了取得DML操作所改变的数据,可以使用returning子句,为了取得DML所作用的多行数据,需要使用bulk collect子句,示例如下:
declare type temp_table_type is table of cip_temps%rowtype index by binary_integer; temp_table temp_table_type; begin delete from cip_temps where id=1 returning name,age,address,id bulk collect into temp_table; dbms_output.put_line('信息'|| temp_table.count); for i in 1..temp_table.count loop dbms_output.put_line(temp_table(i).name ||':'|| temp_table(i).age||':'||temp_table(i).address||':'||temp_table(i).id); end loop; end;
发表评论
-
oracle 异常处理
2010-06-02 19:01 17721、异常的优点 如果没有异常,在程序中,应当检查每个 ... -
oracle 行触发与语句触发
2010-05-25 12:49 1022oracle 行触发与语句触发的区别 1、行触发器有 f ... -
oracle 系统表
2010-05-21 12:28 782数据字典dict总是属于Oracle用户sys的。 1、 ... -
EXECUTE IMMEDIATE 执行sql语句
2010-05-21 10:54 3242在ORACLE的PL/SQL里:EXECUTE IMMEDIA ... -
Oracle正则表达式
2010-05-20 16:26 1281oracle的正则表达式(regular expression ... -
oracle 数组
2010-05-20 16:18 1065--固定数组 declare type type_ar ... -
Oracle 存储过程传入二维数组
2010-05-20 15:58 3627Oracle 存储过程传入二维数组 使用Ora ... -
存储过程操作同义词
2010-05-18 11:39 1458A用户ab01 表,B用户通过同义词访问A用户的ab01表 ... -
用Bulk Collect提高查询效率
2010-05-05 16:38 1189Oracle8i中首次引入了Bulk Collect特性, ... -
oracle 统计分组语句
2010-04-22 17:32 2078在应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时 ... -
oracle 控制语句
2010-04-22 17:29 1173一、条件分支语句 条件分支语句用于依据特定的情况选择要执行的操 ... -
oracle 存储过程语法
2010-04-22 17:26 3242子程序是指被命名的PL/SQL块,这些块可以带有参数,可以在不 ... -
oracle 函数
2010-04-22 17:23 1400一、开发函数 函数用于返回特定数据,如果在应用程序中经常需要返 ... -
oracle 触发器
2010-04-22 17:19 4347触发器是指存放在数据库中,并被隐藏执行的存储过程。在Orac ... -
oracle 复合数据类型(pl/sql记录)
2010-04-22 17:16 2000为了简化单行多列数据的处理,可以使用PL/SQL记录;为了保留 ... -
oracle 复合数据类型(批量绑定)2
2010-04-22 17:12 1537一、PL/SQL集合 为了处理单列多行,可以使用PL/ ... -
oracle 显示游标
2010-04-22 16:57 1318在oracle9i之前,为了查询处理select语句返回的多行 ... -
Oracle SQL语句(连接查询)
2010-04-22 16:02 3343一、内连接和外连接 内连接用于返回满足连接条件的记录;而 ... -
关于dbms_sql的使用
2010-03-29 16:31 795关于dbms_sql的使用 PL/SQL ... -
使用Oracle的DBMS_SQL包执行动态SQL语句
2010-03-29 11:29 2529DECLARE v_cursor NUMBER ...
相关推荐
oracle基本数据类型
Oracle基本数据类型存储格式浅析(一)——字符类型 Oracle基本数据类型存储格式浅析(二)——数字类型 Oracle基本数据类型存储格式浅析(三)——日期类型 Oracle基本数据类型存储格式浅析(四)——ROWID类型 ...
oracle_数据类型讲解 详细讲解orqcle数据类型讲解
Oracle_plsql讲义:第19章 复合数据类型.ppt
oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本。
Oracle与.Net 数据类型映射,适用于.Net开发Oracle数据库。
sql server 和oracle 中数据类型的区别
利用.net 语言编程实现对Oracle数据的批量的导入功能
Oracle各种数据类型的介绍,适合中高级编程开发人员 也适合入门级的学员
oracle和sql数据类型
oracle数据库中各种数据类型的详细说明
oracle的数据类型及存储方式 文档,好资源和大家一起分享!
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
Oracle基本数据类型.pdf
oracle 批量插入数据存储过程。亲测好用。支持 plsql ,toad,等数据库分析软件。主要包括变量的定义,循环及游标的使用等, 亲测好用
ORACLE 10g 数据类型 PPT ORACLE 10g 数据类型 PPT
Oracle的数据类型: 1、CHAR数据类型,该类型是固定长度的字符串,如果没指定大小,则默认占用一字节,如果输入的值小于指定的长度,则数据库用空格填充至固定长度,如果用户输入的值大于指定的长度,则数据库...
Oracle9i数据类型Java数据类型Schema类型对比
Oracle的数据类型
SQL数据类型JDBC类型代码标准的Java类型Oracle扩展的Java类型 1.0标准的JDBC类型: CHARjava.sql.Types.CHARja