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“双”表的等价物是啥?

这些查询的 Oracle 旧语法连接等价物是啥?

使用 JDBC 时,Oracle 的 REF CURSOR 在 Postgresql 中的等价物是啥?

函数中静态变量的 Python 等价物是啥?

Flow 中星号 (*) 类型的用途是啥,TypeScript 中的等价物是啥?

PostgreSQL 中 Long 数据类型的等价物是啥?