Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » SQL 方言和兼容性 » SQL 方言 » Transact-SQL 过程中的错误处理

 

在过程中使用 RAISERROR 语句

可以使用 RAISERROR 语句生成用户定义的错误。RAISERROR 语句的功能类似于 SIGNAL 语句。请参见RAISERROR 语句

RAISERROR 语句本身并不会导致从过程中退出,但它可以同 RETURN 语句或 @@error 全局变量的测试组合在一起控制用户定义错误之后的执行过程。

如果 on_tsql_error 数据库选项被设置为 Continue,RAISERROR 语句将不再发出有关执行结束错误的信号。相反,该过程会完成并存储 RAISERROR 状态代码和消息,然后返回最近的 RAISERROR。如果导致 RAISERROR 的过程是从其它过程中调用的,RAISERROR 将在最外部的调用过程终止后返回。如果将 on_tsql_error 选项设置为缺省设置 (Conditional),continue_after_raiserror 选项会控制执行 RAISERROR 语句后的行为。如果将 on_tsql_error 选项设置为 Stop 或 Continue,on_tsql_error 设置会优先于 continue_after_raiserror 设置。

当该过程终止后,您将丢失中间的 RAISERROR 状态和代码。如果错误在返回时随 RAISERROR 一起发生,则将返回错误信息并丢失 RAISERROR 信息。应用程序可以通过在不同的执行点检查 @@error 全局变量来查询中间 RAISERROR 状态。