Oracle 中 @@Error 的等价物是啥
Posted
技术标签:
【中文标题】Oracle 中 @@Error 的等价物是啥【英文标题】:What is the equivalent for @@Error in OracleOracle 中 @@Error 的等价物是什么 【发布时间】:2019-03-01 13:53:46 【问题描述】:IF @@ERROR <> 0 GOTO ProcError
我在 SQL Server 中有上述代码。我找不到 @@Error 的 oracle 等效项。
如何做到这一点?
【问题讨论】:
@@Error
做什么或返回什么?
如果上一条sql语句发生错误,则@@Error中填充非零值
如果发生错误,PL/SQL 中会抛出异常。您需要添加一个exception handler
【参考方案1】:
我同意@Kfinity 提供的异常处理程序来捕获由 SQL 语句(或就此而言的 PL/SQL 语句)引发的错误。
知道@@Error 在 PL/SQL 中的直接关联是 SQLCODE 也可能会有所帮助。如果非零(仅在从异常处理程序中调用时),它会给您错误代码。如果为0,那么,那么....没有错误!
【讨论】:
【参考方案2】:听起来您正在尝试进行错误处理。在 PL/SQL 中,它通常看起来像这样:
BEGIN
...do something...
EXCEPTION WHEN NO_DATA_FOUND THEN -- check for a specific exception
DBMS_OUTPUT.put_line('No data found exception caught');
WHEN OTHERS THEN -- catch any exception
DBMS_OUTPUT.put_line('Unexpected error');
DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_backtrace);
RAISE; -- re-raise the exception after logging it
END;
您可以对当前正在使用的整个 PL/SQL 块(函数、过程等)执行此操作,或者您可以将单个语句包装在带有异常处理程序的匿名 PL/SQL 块中,如果您想要更多的 TRY..CATCH 功能。
【讨论】:
以上是关于Oracle 中 @@Error 的等价物是啥的主要内容,如果未能解决你的问题,请参考以下文章
MS SqlServer 中的 Oracle“双”表的等价物是啥?
使用 JDBC 时,Oracle 的 REF CURSOR 在 Postgresql 中的等价物是啥?