错误和警告的处理方式各不相同。对错误的缺省操作是为 SQLSTATE 和 SQLCODE 变量设置值,并在遇到错误时将控制权返回给调用环境;而对警告的缺省操作是设置 SQLSTATE 和 SQLCODE 值,并继续执行过程。
以下演示过程说明缺省情况下警告的处理方式。
在本例中,SIGNAL 语句生成一个指明找不到行的条件。这是警告,不是错误。
DROP PROCEDURE OuterProc; DROP PROCEDURE InnerProc; CREATE PROCEDURE OuterProc() BEGIN MESSAGE 'Hello from OuterProc.' TO CLIENT; CALL InnerProc(); MESSAGE 'SQLSTATE set to ', SQLSTATE,' in OuterProc.' TO CLIENT; END; CREATE PROCEDURE InnerProc() BEGIN DECLARE row_not_found EXCEPTION FOR SQLSTATE '02000'; MESSAGE 'Hello from InnerProc.' TO CLIENT; SIGNAL row_not_found; MESSAGE 'SQLSTATE set to ', SQLSTATE, ' in InnerProc.' TO CLIENT; END; CALL OuterProc(); |
Interactive SQL [消息] 选项卡随后会显示以下内容:
Hello from OuterProc. Hello from InnerProc. SQLSTATE set to 02000 in InnerProc. SQLSTATE set to 00000 in OuterProc. |
通过由警告 (02000) 设置的 SQLSTATE,这两个过程都在生成警告后继续执行。
执行 InnerProc 中的第二个 MESSAGE 语句时会重置该警告。任何 SQL 语句的成功执行都会将 SQLSTATE 重置为 00000,将 SQLCODE 重置为 0。如果某一过程需要保存错误状态,它必须在引发错误或警告的语句执行后立即指派状态值。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |