第三章 SQL错误信息
下表列出了SQL
数字错误代码及其错误消息。这些代码作为SQLCODE
变量值返回。
注意:虽然本文档将错误代码列为负值,但JDBC
和ODBC
客户端始终收到正值。例如,如果ODBC或JDBC应用程序返回错误代码30
,请在此表中查找错误代码-30
。
SQLCODE
0
和100
有两个SQLCODE
值不表示SQL
错误:
错误代码 | 描述 |
0 |
成功完成 |
100 |
无数据 |
SQLCODE=0
表示SQL
操作成功完成。对于SELECT
语句,这通常意味着从表中成功检索数据。但是,如果SELECT
执行聚合操作(例如:SELECT SUM(myfield)
),则聚合操作成功,即使myfield
中没有数据,也会发
- 出
SQLCODE=0
;在这种情况下,SUM
返回NULL
,%ROWCOUNT=1
。 SQLCODE=100
表示SQL
操作成功,但找不到要操作的数据。出现这种情况的原因有很多。对于SELECT
,这些包括:指定的表不包含数据;该表不包含满足查询条件的数据;或者行检索已到达表的最后一行。对于UPDATE
或DELETE
,这些包括:指定的表不包含数据;或者该表不包含满足WHERE
子句条件的数据行。在这些情况下,%ROWCOUNT=0
。
在嵌入式SQL
中,当SQLCODE=100
时,INTO
子句中指定的输出主机变量为空。
SQLCODE -400
SQLCODE-400
错误“发生致命错误”是一个常规错误。它是在更具体的SQLCODE
错误代码不可用时生成的。
检索SQL
消息文本
要确定SQLCODE
数字代码的含义,请使用以下ObjectScript
语句:
WRITE "SQLCODE=",$SYSTEM.SQL.Functions.SQLCODE(-nnn)
USER>WRITE "SQLCODE=",$SYSTEM.SQL.Functions.SQLCODE(-1) SQLCODE=无效 SQL 语句 USER>WRITE "SQLCODE=",$SYSTEM.SQL.Functions.SQLCODE(-2) SQLCODE='E' 之后缺少指数数字 USER>WRITE "SQLCODE=",$SYSTEM.SQL.Functions.SQLCODE(-3) SQLCODE=缺少右引号 (") USER>WRITE "SQLCODE=",$SYSTEM.SQL.Functions.SQLCODE(-4) SQLCODE=需要的术语以下列项之一开头:标识符,常数,汇总,%ALPHAUP, %EXACT, %MVR, %SQL STRING, %SQLUPPER, %STRING, %TRUNCATE, %UPPER, $$, :, +, -, (, NOT, EXISTS或FOR USER>WRITE "SQLCODE=",$SYSTEM.SQL.Functions.SQLCODE(-400) SQLCODE=出现致命错误
此SQLCODE()
方法也可以作为存储过程调用:%SYSTEM_SQL.Functions_SQLCODE(-nnn)
。
如果可能(通常在SQL
编译时),错误消息包括导致错误的字段、表、视图或其他元素的名称。这些名称的占位符使用<name>
语法约定显示。
%msg
变量可能包含特定错误的附加消息错误文本。