yk156511 发表于 2022-12-27 20:19

oracle数据库游标更新时sql%rowcount影响数量记录的一个疑问

本帖最后由 yk156511 于 2022-12-27 20:20 编辑


这是部分的sql。(update的部分忽略)变量1和变量2是变化的,先把符合条件的全部找出来,最后一起提交。类似效果如下:
会先找A:delete from bdc_affix_dir where slid=1 and ax_owner<>1;--(假如提交会删除2条)
再找B:   delete from bdc_affix_dir where slid=2 and ax_owner<>2;--(假如提交会删除3条)
问题:
sql%rowcount只能记载最后一次的操作数量,也就是只会记载最后一次的B(sql%rowcount=3)。
需求:
请问有没有办法把所有的删除记录类似求和的打印出来!
希望达到的效果 dbms_output.put_line(n)--希望打印出来是5

yk156511 发表于 2022-12-27 20:21

刚自学,大佬轻喷!

yunyun123456789 发表于 2022-12-27 20:56

发错了 抱歉{:1_911:}{:1_911:}{:1_911:}{:1_911:}

溯雪 发表于 2022-12-28 06:26

可以用变量啊

cloud2010 发表于 2022-12-28 10:32


每次执行sql语句后,把sql%rowcount保存到变量

yk156511 发表于 2022-12-28 17:22

cloud2010 发表于 2022-12-28 10:32
每次执行sql语句后,把sql%rowcount保存到变量

请问具体怎么操作呢。

cloud2010 发表于 2022-12-29 06:14

yk156511 发表于 2022-12-28 17:22
请问具体怎么操作呢。


你图片中标3那行就是把sql%rowcount赋值给变量n

如果只执行两次语句,可以一个赋给变量m,一个赋给变量n

如果是循环执行语句,可以循环之前把n赋成0,循环中 n:=n+sql%rowcount

如果是要执行很多次脚本,而要把每次脚本执行的行数保存下来,那需要建一个表,每次都把sql%rowcount插入表中,因为脚本运行完释放内存,变量会消失

yk156511 发表于 2022-12-29 09:15

cloud2010 发表于 2022-12-29 06:14
你图片中标3那行就是把sql%rowcount赋值给变量n

如果只执行两次语句,可以一个赋给变量m,一个赋给变 ...

谢谢,有思路了。
页: [1]
查看完整版本: oracle数据库游标更新时sql%rowcount影响数量记录的一个疑问