我正在尋找一種使用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