您可使用 SQLSTATE 变量来检查每一 FETCH 语句的结果。数据库服务器在每一 SQL 语句之后设置 SQLSTATE 变量。如果成功地返回一行,则 SQLSTATE 变量包含值 00000。如果未找到行,则数据库服务器设置 SQLSTATE 代码为 02000,表明 未找到数据,且当前行不变。下列条件将 SQLSTATE 代码设置为 02000,表明 未找到数据:
数据库服务器从系统诊断区域的 RETURNED_SQLSTATE 域复制 SQLSTATE 代码。 GBase 8s 的客户机/服务器通信协议,诸如 SQLI 和 DRDA®,支持 SQLSTATE 代码值。要获取这些代码的列表,并获取关于如何获得消息文本的消息,请参阅 使用 SQLSTATE 错误状态代码。您可使用 GET DIAGNOSTICS 语句来直接地检验 RETURNED_SQLSTATE 域。系统诊断区域还可包含附加的错误信息。
您还可使用 SQL 通信区域(sqlca)的 SQLCODE 变量来确定相同的结果。
使用 SPL 例程中的 FETCH 语句来检索指定的动态游标活动的集合的下一行,检索到一个在同一 SPL 例程中声明的 SPL 变量的有序列表内。
SPL 例程中 FETCH 语句的语法是在 GBase 8s ESQL/C 例程中 FETCH 支持的语法的子集。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
cursor_id | 动态游标的名称 | 必须是打开的且已经在同一 SPL 例程中声明 | 标识符 |
output_var | 存储来自该行的访存的值的 SPL 变量 | 必须在调用上下文中已经本地地或全局地声明,且必须为与访存的列值相兼容的数据类型 | 标识符 |
恰如在 ESQL/C 例程中那样,输出变量的列表必须与列值的数量、顺序和数据类型相一致,这些列值是 SQL 语句关联的由特定的游标返回的那些行。
所有 SPL 游标都是顺序游标。您的 UDR 必须包括检测游标的活动的集合到头的逻辑,因为在 SPL 中 NOTFOUND 条件不会自动地产生例外。
内建的 SQLCODE 函数,仅可从 SPL 例程调用的函数,可返回 FETCH 操作的状态代码。
对引用顺序选择游标或功能游标的 FETCH 语句的其他 ESQL/C 限制,也适用于 SPL 中的 FETCH 操作。
FETCH 语句仅可引用 DECLARE 语句定义的动态游标。cursor_id 不可指定 SPL 的 FOREACH 语句声明的直接游标的名称。