数据库alter用法_数据库有哪些

数据库 (1) 2024-09-13 10:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
数据库alter用法_数据库有哪些,希望能够帮助你!!!。

概述

最近在编写一个存储过程时,因为打算记录一下每次删除的记录数,所以用了SQL%ROWCOUNT来实现,这里简单记录下。


SQL%ROWCOUNT

SQL%ROWCOUNT是一个游标属性,而SQL中的DML操作实际上是一种隐式的游标操作,在做INSERT,UPDATE,DELETE,MERGE以及SELECT INTO操作时,Oracle会打开一个始终指向最近执行的SQL语句的隐式游标,这个游标有3个常用的属性:

(1)SQL%FOUND,有记录被修改,返回TRUE

(2)SQL%NOTFOUND,没有记录被修改,返回TRUE

(3)SQL%ROWCOUNT,语句操作的记录数


简单做个实验演示一下

1、数据准备

数据库alter用法_数据库有哪些_https://bianchenghao6.com/blog_数据库_第1张


2、存储过程

set serveroutput on declare begin execute immediate 'alter session enable parallel dml'; delete /* parallel(t,4) */ from test1 t where id=1; dbms_output.put_line('删除语句删除了'||SQL%ROWCOUNT||'条记录'||CHR(10) ||'SQL%FOUND='||CASE SQL%FOUND WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END||CHR(10) ||'SQL%NOTFOUND='||CASE SQL%NOTFOUND WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END); commit; delete from test1 where id=2; dbms_output.put_line('删除语句删除了'||SQL%ROWCOUNT||'条记录'||CHR(10) ||'SQL%FOUND='||CASE SQL%FOUND WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END||CHR(10) ||'SQL%NOTFOUND='||CASE SQL%NOTFOUND WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END); commit; delete from test1; dbms_output.put_line('删除语句删除了'||SQL%ROWCOUNT||'条记录'||CHR(10) ||'SQL%FOUND='||CASE SQL%FOUND WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END||CHR(10) ||'SQL%NOTFOUND='||CASE SQL%NOTFOUND WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END); commit; execute immediate 'alter session disable parallel dml'; EXCEPTION WHEN OTHERS THEN ROLLBACK; --有问题回滚 end; / 
数据库alter用法_数据库有哪些_https://bianchenghao6.com/blog_数据库_第2张


3、测试效果

可以看到很明显记录了删除的记录。

数据库alter用法_数据库有哪些_https://bianchenghao6.com/blog_数据库_第3张


后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!

数据库alter用法_数据库有哪些_https://bianchenghao6.com/blog_数据库_第4张

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

下一篇

已是最新文章

发表回复