我正在寻找一种使用Pl/SQL的方法来检查'立即执行'执行的语句是否是dml语句。Oracle:检查dml语句
3
A
回答
0
我想你可以使用SQL%ROWCOUNT来检查它。例如(粗块,未经测试)
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行数。因此,如果执行立即执行的语句是DML语句,并且如果改变了任何内容,那么sql%rowcount将大于0.否则,如果它是DDL,那么使用SQL%ROWCOUNT很可能会引发异常(或这将等同于0)
+3
如果某些更新查询像“update someTable where criterai that no result?” SQL%ROWCOUNT将为0,因此DDL的检测将失败pal。 – 2013-02-25 06:42:18
1
有可能检查一个解决方案,如果查询字符串包含“插入”或“更新”或...
但我不认为这可能是通用和一致的解决方案
如果sql正在调用可能调用DML或DLL的包或storprocedure,该怎么办?
我觉得你可能会在BEFORE/AFTER DDL TRIGER或调查ora_sysevent
功能
相关问题
- 1. BigQuery INSERT DML语句限制
- 2. Oracle SQL - DML语句是否会导致对象无效?
- 3. 甲骨文 - Oracle如何管理交易的具体DML语句
- 4. 针对dml语句的oracle模式审计
- 5. oracle 8i中dml语句中的函数替换
- 6. DML统计,oracle
- 7. C#中的Sql解析器用于语法检查Oracle语句
- 8. SQL视图中的DML语句
- 9. 为什么'Select'被称为DML语句?
- 10. 从Azure执行Azure SQL DML语句ML
- 11. 为什么SQL语句分为DDL,DML,DCL和TCL语句?
- 12. 删除既可以是DDL语句又可以是DML语句
- 13. Oracle DML语句文件 - 执行,记录错误并继续而不中止
- 14. SQL查询语句检索从Oracle数据库
- 15. 使用SELECT语句在Oracle检查约束
- 16. 检查多个if语句
- 17. 如果语句检查
- 18. java条件语句检查
- 19. 检查语句错误PDO
- 20. Java如果语句检查
- 21. if语句检查变量
- 22. EXC_BAD_ACCESS检查语句条件?
- 23. mysql if语句行检查
- 24. 从Excel执行Oracle Query(DML)
- 25. 使用SET语句查询的Oracle SQL
- 26. PL/SQL Oracle查询用IF语句
- 27. SQL Oracle查询 - 选择语句
- 28. 如何查看Oracle过程(DBMS_OUTPUT语句)
- 29. Oracle select语句语法
- 30. Oracle IF/ELSE语句
我不知道。基本上,如果您使用Execute Immediate,那么您的工作就是知道正在运行的是什么 - 即您绝不应该让它运行由用户或其他程序提供的任意代码。 – 2013-02-25 03:55:18