首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle:检查dml语句

Oracle:检查dml语句
EN

Stack Overflow用户
提问于 2013-02-25 07:28:17
回答 2查看 1.1K关注 0票数 3

我正在寻找一种使用Pl/SQL检查由'Execute immediate‘执行的语句是否为dml语句的方法。

EN

回答 2

Stack Overflow用户

发布于 2013-02-25 14:38:34

检查查询字符串是否包含"INSERT“或"UPDATE”或...

但我认为这可能不是普遍和一致的解决方案。

如果SQL调用的包或存储过程可能调用DML或DLL,该怎么办?

我认为您可以依赖BEFORE / AFTER DDL TRIGER或研究ora_sysevent函数

票数 1
EN

Stack Overflow用户

发布于 2013-02-25 13:04:04

我认为您可以使用SQL%ROWCOUNT来检查它。例如(一个粗略的块,未测试)

代码语言:javascript
复制
set serveroutput on
begin
execute immediate 'update tableA set fieldA=100';
if(SQL%ROWCOUNT > 0) then
dbms_output.put_line('DML');
end if;
end;
/

SQL%ROWCOUNT返回受最新DML影响的行数。因此,如果execute immediate执行语句是DML语句,且如果有任何更改,则sql%rowcount将大于0。否则,如果它是DDL,那么使用SQL%ROWCOUNT很可能会引发异常(或者等于0)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15057967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档