在异常处理中显示SQLERRM就可以了,例如
EXCEPTION WHEN others THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('错误原因:'||SQLErrm);
EXCEPTION WHEN others THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('错误原因:'||SQLErrm);
解决方案 »
- 跪求:java.sql.SQLException: OALL8 处于不一致状态,违反协议,如何解决
- 马士兵视频中一道关于sql的题,有点难度,请高手求解
- 数据挖掘和统计的大量资料
- 求一SQL:求出特定时间数据的变化?
- 如何从oracle9i备份到oracle10g,急,谢谢
- Access导入到Oracle11g,ODBC配置问题
- how to upgrade oracle from 9.0 to 9.2
- ora806能否在WINDOWS2000正常使用???????!!!!!!
- 怎样写sql语句
- pb作前端oracle作後台開發出來的系統頒發時,客戶機是否可以不裝oracle客戶端??
- 请教PL/SQL DEVELOPER使用方面的一个问题
- SQL的问题,急急!
而我要的是产生错误的源程序的sql语句!
SQL语句
2. 如果你用的是动态SQL, 那可以把动态语句写入表中,如
...
BEGIN
SQLSTR := 'UPDATE TBL ...';
EXECUTE IMMEDIATE SQLSTR;
EXCEPTION WHEN OTHERS
INSERT INTO LOG_TABLE VALUES SQLSTR;
...
END;
如果语句出错,编译的确不会通过,不过有些时候不是语法的问题,比如报6502或1405之类的运行期错误:如下,可能有好多语句包含在begin,end中.运行时如果出现异常我想在exception中得到该出错的语句,在pro*c中我试验过,不过在存储过程中不知道如何得到.
begin
...
...
...
exception
得到出错语句
end;
begin
...
BEGIN ...
...
exception
得到出错语句;
END;
...
BEGIN ...
...
exception
得到出错语句;
END;
end;
PL/SQL作为一种对象式的编程,能够通过如下方式扑获错误,但系统代码本身扑获错误的目的是能保证数据库操作的错误不会导致当前Package的CoreDown,而影响整个数据库或外部应用的运行, 所以在扑获到错误后,应该正确根据错误判断是保留现场 还是 先记录错误继续运行。这就要看你的应用逻辑了! 只是我的个人见解 谢谢!BEGIN
<SQL statements>
EXCEPTION WHEN OTHERS
<Save your Exception or Raise here> ...
END;