SQLCODE 函数不用参数,但将当前 SPL 例程已执行了的最近执行的(不论静态的还是动态的)SQL 语句的 sqlca.sqlcode 值返回到它的调用上下文。仅在游标的上下文中使用 SQLCODE。
您可在 SPL 例程内的表达式中使用 SQLCODE 来标识动态游标的状态。在错误处理中以及在诸如确定查询或函数调用是否尚未返回行的上下文中,或当游标已达到了活动集的最后行时,或当 SPL 程序控制应从循环中退出时要标识其他条件,此内建的函数是有用的。
下列 SPL 程序片断说明使用 SQLCODE 来检测 WHILE 循环内游标的活动集的末尾。
CREATE PROCEDURE ... ... DEFINE myc1 ... ... PREPARE p FOR "SELECT c1 FROM t1"; DECLARE cur FROM s; OPEN cur; FETCH cur INTO myc1; WHILE (SQLCODE != 100) FETCH cur INTO myc1; -- process myc1 ... END WHILE; END PROCEDURE;
在以 ESQL/C 编写的 UDR 中不需要 SQLCODE,其通过“动态的 SQL”的 GET DIAGNOSTICS 语句以及有其他机制直接访问“SQL 通信区域”(SQLCA)。如果内建的 SQLCODE 函数的调用上下文不在 SPL 例程中,则数据库服务器发出错误。