说明:

%BULK_ROWCOUNT 属性计算FORALL迭代影响行数
  在进行SQL数据操作语句时,SQL引擎打开一个隐式游标(命名为SQL),该游标的标量属性(scalar attribute)有 %FOUND, %ISOPEN, %NOTFOUND, and %ROWCOUNT。
  FORALL语句除具有上边的标量属性外,还有个复合属性(composite  attribute):%BULK_ROWCOUNT,该属性具有索引表(index-by  table)语法。它的第i个元素存贮SQL语句(INSERT,  UPDATE或DELETE)第i个执行的处理行数。如果第i个执行未影响行,%bulk_rowcount  (i),返回0。FORALL与%bulk_rowcount属性使用相同下标

--%bulk_rowcount 代码 :

 /*
drop table TESTT ;
CREATE TABLE TESTT(TID varchar2(100)) ;
TRUNCATE TABLE TESTT ;
SELECT * FROM TESTT ; */ DECLARE
type stp_index is table of sys_product.productcode%type;
--idx_tab stp_index :=number_index(null) ;
idx_tab stp_index;
cursor cur_stp is
select productcode pcode from sys_product; BEGIN
----新增
open cur_stp;
loop
fetch cur_stp bulk collect
into idx_tab;
exit when cur_stp%notfound;
end loop;
close cur_stp ;
forall cur in idx_tab.first .. idx_tab.last
insert into testt values (idx_tab(cur));
dbms_output.put_line('insert --------------' ||sql%rowcount);
for i in idx_tab.first .. idx_tab.count loop
dbms_output.put_line(idx_tab(i)||' insert 受影响行为 ' || sql%bulk_rowcount(i)||' 行 !');
end loop;
COMMIT;
--修改
forall cur in idx_tab.first .. idx_tab.last
update testt set tid=idx_tab(cur)||' % ' where tid=idx_tab(cur);
dbms_output.put_line('update --------------' ||sql%rowcount);
for i in idx_tab.first .. idx_tab.count loop
dbms_output.put_line(idx_tab(i)||' update 受影响行为 ' || sql%bulk_rowcount(i)||' 行 ! '|| sql%rowcount);
end loop;
END;

---结果:

 insert --------------19
GFWD insert 受影响行为 1 行 !
GOPTION insert 受影响行为 1 行 !
NCD insert 受影响行为 1 行 !
GLS insert 受影响行为 1 行 !
IBO insert 受影响行为 1 行 !
REPO insert 受影响行为 1 行 !
OBPO insert 受影响行为 1 行 !
BSD insert 受影响行为 1 行 !
DEPO insert 受影响行为 1 行 !
IRS insert 受影响行为 1 行 !
FXSWAP insert 受影响行为 1 行 !
FRA insert 受影响行为 1 行 !
IBL insert 受影响行为 1 行 !
FXFWD insert 受影响行为 1 行 !
CCS insert 受影响行为 1 行 !
FXOPTION insert 受影响行为 1 行 !
GSWAP insert 受影响行为 1 行 !
BSDC insert 受影响行为 1 行 !
CI insert 受影响行为 1 行 !
update --------------19
GFWD update 受影响行为 1 行 ! 19
GOPTION update 受影响行为 1 行 ! 19
NCD update 受影响行为 1 行 ! 19
GLS update 受影响行为 1 行 ! 19
IBO update 受影响行为 1 行 ! 19
REPO update 受影响行为 1 行 ! 19
OBPO update 受影响行为 1 行 ! 19
BSD update 受影响行为 1 行 ! 19
DEPO update 受影响行为 1 行 ! 19
IRS update 受影响行为 1 行 ! 19
FXSWAP update 受影响行为 1 行 ! 19
FRA update 受影响行为 1 行 ! 19
IBL update 受影响行为 1 行 ! 19
FXFWD update 受影响行为 1 行 ! 19
CCS update 受影响行为 1 行 ! 19
FXOPTION update 受影响行为 1 行 ! 19
GSWAP update 受影响行为 1 行 ! 19
BSDC update 受影响行为 1 行 ! 19
CI update 受影响行为 1 行 ! 19

--sql%rowcount  && cursor%rowcount ;

 declare
cursor cur_stp is
select s.productcode pcode from sys_product s;
TID varchar2(100);
begin
open cur_stp;
dbms_output.put_Line('0_cur_stp%rowcount='||cur_stp%rowcount);
loop
fetch cur_stp
into tid;
--注意这里没有换行;
dbms_output.put(cur_stp%rowcount||' '); --'0~19'
exit when cur_stp%notfound;
end loop;
--放到游标里面和外面的区别;
dbms_output.put_Line('sql%rowcount=' || sql%rowcount);
dbms_output.put_Line('1_cur_stp%rowcount=' || cur_stp%rowcount);
close cur_stp; for i in cur_stp loop
dbms_output.put_Line(cur_stp%rowcount || '--' || i.pcode);
end loop;
--放到底部的话会 抛错 :无效的游标; dbms_output.put_Line(cur_stp%rowcount);
end;

--结果:

 0_cur_stp%rowcount=0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 19 sql%rowcount=
1_cur_stp%rowcount=19
1--GFWD
2--GOPTION
3--NCD
4--GLS
5--IBO
6--REPO
7--OBPO
8--BSD
9--DEPO
10--IRS
11--FXSWAP
12--FRA
13--IBL
14--FXFWD
15--CCS
16--FXOPTION
17--GSWAP
18--BSDC
19--CI

sql%bulk_rowcount && sql%rowcount 的使用的更多相关文章

  1. SQL Server中@@ROWCOUNT的用法

    SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变 ...

  2. [转载]Oracle数据库 sql%found,sql%notfound,sql%rowcount

    sql%found,sql%notfound,sql%rowcount 在执行DML(insert,update,delete)语句时,可以用到以下三个隐式游标(游标是维护查询结果的内存中的一个区域, ...

  3. sql%found sql%notfound sql%rowcount sql%isopen

    原文引入:http://blog.csdn.net/mh942408056/article/details/6949325 sql%found sql%notfound sql%rowcount sq ...

  4. SQL PL/SQL语法手册

    SQL  PL/SQL语法手册 目   录 第一部分  SQL语法部分 3 一. CREATE TABLE 语句 3 二. CREATE SEQUENCE语句 5 三. CREATE VIEW语句 6 ...

  5. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  6. SQL Server SQL分页查询

    SQL Server SQL分页查询的几种方式 目录 0.    序言 1.    TOP…NOT IN… 2.    ROW_NUMBER() 3.    OFFSET…FETCH 4.    执行 ...

  7. pl/sql和sql的区别

    源地址:https://zhidao.baidu.com/question/187511430.html 1 sql(数据定义语言) 和PL/Sql的区别:答:SQL是结构化查询语言,比较接近自然语言 ...

  8. 对SQL Server SQL语句进行优化的10个原则

    1.使用索引来更快地遍历表. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存放在数据页上.合理的索引设计要建立在对各种查询的分析和预测上.一般来说:①.有大 ...

  9. PL/SQL --> 动态SQL调用包中函数或过程

    动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句.最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量.但是对于系统自定义的包或用户自定的包 ...

随机推荐

  1. Comet OJ CCPC-Wannafly Winter Camp Day8 A Aqours

    A Aqours 链接 分析: 给出的点可以视为是按照BFS序给的,也就是说从浅到深给出.可以再给每个节点u维护一个f值,表示离u最近的叶子节点到它的距离. 所以每当扫到一个叶子节点,就可以暴力往根节 ...

  2. Unity3d之Hash&Slash学习笔记(一)--角色属性类的构架

    角色属性类的构架 角色属性类有8个类,继承关系如下图: 每个类的具体作用见之后的随笔

  3. springboot之websocket,STOMP协议

    一.WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 ...

  4. Codeforces 909 C. Python Indentation (DP+树状数组优化)

    题目链接:Python Indentation 题意: Python是没有大括号来标明语句块的,而是用严格的缩进来体现.现在有一种简化版的Python,只有两种语句: (1)'s'语句:Simple ...

  5. Atcoder2167 Blackout

    Atcoder2167 Blackout zjoi讲过的一道神题啊... 首先把每个黑点(a,b)看成一条有向边a->b,然后这个图就变成了一张有自环的有向图. 然后弱联通块就分开了,对于每个连 ...

  6. AJAX其实就是一个异步网络请求

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).其实就是一个异步网络请求. 一.创建对象 var xmlhttp; if (w ...

  7. 程序员 vs HR(皮这么一下很开心)

    最近网络上一段 HR VS 程序员 的表情包火了 来来来 我们近距离感受下 来源|网络:http://t.cn/RuTKC8B 哈哈哈!大家可以留言说说你们面试时候的趣事 更多内容关注公众号:51re ...

  8. 微信小程序云开发

    什么是云开发? 云开发是由腾讯云联合微信团队为开发者提供的 包含 云函数.云数据库和云文件存储能力的后端云服务 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 A ...

  9. 宏基4752g 开机进度条卡到75%左右,解决办法

    起因:更新win10推送的更新补丁,失败自动回退.开机进度条只能走到75%,bios进不去,最后就卡在开机的logo.(还有其他人是win7直接升级win10,也出现了这种情况.)解决办法:重刷bio ...

  10. 通过切换iframe来定位元素(用于Python+selenium自动化测试)

    切换 iframe:1.由于登录按钮是在iframe上,所以第一步需要把定位器切换到iframe上2.用switch_to_frame方法切换,此处有id属性,可以直接用id定位切换 iframe 与 ...