Watcom SQL 方言中的缺省过程错误处理方式与 Transact-SQL 方言中的处理方式不同。缺省情况下,Watcom SQL 方言过程在遇到错误时退出,并且将 SQLSTATE 值和 SQLCODE 值返回到发起调用的环境中。
显式的错误处理可以使用 EXCEPTION 语句来置入到 Watcom SQL 存储过程中,或者,您可以使用 ON EXCEPTION RESUME 语句指示该过程在遇到错误时从下一个语句继续执行。
当 Transact-SQL 方言过程遇到错误时,将从下一个语句继续执行。全局变量 @@error 保存最近执行过的语句的错误状态。您可以在语句之后检查这一变量,以强制从过程中返回。例如,以下语句在出错时将导致退出。
IF @@error != 0 RETURN |
当该过程执行完之后,返回值将表明该过程是成功还是失败。此返回状态是一个整数,并且可以按如下方式对其进行访问:
DECLARE @Status INT EXECUTE @Status = proc_sample IF @Status = 0 PRINT 'procedure succeeded' ELSE PRINT 'procedure failed' |
下表介绍了内置的过程返回值以及这些值的含义:
值 | 定义 | SQL Anywhere SQLSTATE |
---|---|---|
0 | 过程执行时没有发生错误 | |
-1 | 缺少对象 | 42W33、52W02、52003、52W07、42W05 |
-2 | 数据类型错误 | 53018 |
-3 | 进程被选作死锁牺牲品 | 40001、40W06 |
-4 | 权限错误 | 42501 |
-5 | 语法错误 | 42W04 |
-6 | 其它用户错误 | |
-7 | 资源错误,如空间不足 | 08W26 |
-10 | 致命的内部不一致 | 40W01 |
-11 | 致命的内部不一致 | 40000 |
-13 | 数据库损坏 | WI004 |
-14 | 硬件错误 | 08W17、40W03、40W04 |
当 SQL Anywhere SQLSTATE 不适用时,将返回缺省值 -6。
RETURN 语句可用于返回其它整数,由用户定义它们的含义。
使用 RAISERROR 语句的过程
Watcom SQL 方言中与 Transact-SQL 类似的错误处理
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |