字段描述

下表中的名称是 SQL INCLUDE 语句提供的名称。

在大多数情况下,C(和 C++)、 COBOL 和 PL/I 使用相同的名称。 RPG 名称则不同,因为在 RPG/400® 中,名称只能包含 6 个字符。 在 ILE RPG 中,支持长名称和短 6 字符名称。 请注意 PL/I 名称与 COBOL 名称不同的一个例子。

表 1. SQL INCLUDE 语句提供的名称
C 名称
COBOL 名称
PL/I 名称
ILE RPG 名称
RPG/400 名称
字段
数据类型
字段值
SQLCAID
sqlcaid
sqlcaid
sqlaid
CHAR(8) 存储转储的 眼睛捕获器 ,包含 "SQLCA"。
SQLCABC
sqlcabc
sqlcabc
sqlabc
INTEGER 包含 SQLCA 的长度, 136。
SQL 代码:
SQL 代码
sqlcode
sqlcod
INTEGER 包含 SQL 返回码。
代码
含义
0
虽然可能已设置 SQLWARN 指示符,但执行成功。
执行成功,但带有警告条件。
错误情况。
SQLERRML1
sqlerrml
sqlerrml
sqlerl
SMALLINT SQLERRMC 的长度指示符,范围为 0 到 70。 0 表示 SQLERRMC 的值不相关。
SQLERRMC1
sqlerrmc
sqlerrmc
sqlerm
CHAR (70) 包含与 SQLCODE 关联的消息替换文本。 对于 CONNECT 和 SET CONNECTION , SQLERRMC 字段包含有关连接的信息,请参阅 表 4 以获取替换文本的描述。
SQLERRP
sqlerrp
sqlerrp
sqlerp
CHAR(8) 包含返回错误或警告的产品和模块的名称。 前三个字符标识产品:
  • ARI for Db2® for VM 和 VSE
  • Db2 for z/OS® 的 DSN
  • Db2 for i 的 QSQ
  • 所有其他 Db2 产品的 SQL
请参阅 CONNECT (类型 1)CONNECT (类型 2) 以获取更多信息。
SQLERRD
sqlerrd
sqlerrd
sqlerr2
数组 包含提供诊断信息的六个 INTEGER 变量,请参阅 表 3 以获取诊断信息的描述。
SQLWARN
sqlwarn
sqlwarn
sqlwrn3
CHAR (11) 一组 11 CHAR (1) 警告指示符,每个都包含空白, "W" 或 "N"。
SQLSTATE
sqlstate
sqlstate
sqlstt
CHAR(5) 指示最近执行的 SQL 语句的结果的返回码。
注:
1
在 COBOL 中,SQLERRM 包括 SQLERRML 和 SQLERRMC。 在 PL/I 中,变长字符串 SQLERRM 相当于 SQLERRML 前缀为 SQLERRMC。
2
在 RPG/400中, SQLERR 定义为由字段 SQLER1 到 SQLER6重新定义的 24 个字符 (不是数组)。 这些字段是全字二进制。 在 ILE RPG 中, SQLERR 也被重新定义为数组。 数组的名称为 SQLERRD。
3
在 RPG/400中, SQLWRN 定义为由字段 SQLWN0 通过 SQLWNA 重新定义的 11 个字符 (不是数组)。 这些字段是全字二进制。 在 ILE RPG 中, SQLWRN 也被重新定义为数组。 数组的名称为 SQLWARN。
表 2。 SQLWARN 诊断信息
C 名称
COBOL 名称
PL/I 名称
ILE RPG 名称
RPG/400 名称
字段值
SQLWARN0
sqlwarn [0]
SQLWARN (1)
SQLWN0
如果至少一个其他指示符包含 "W" 或 "N" ,那么包含 "W"; 如果所有其他指示符都为空白,那么包含 "W"。
SQLWARN1
sqlwarn [1]
SQLWARN (2)
SQLWN1
如果将字符串列的值分配给主变量时被截断,那么包含 "W"。 如果在 CRTSQLCI 或 CRTSQLCPPI 命令 (或 SET OPTION 语句上的 CNULRQD (*NO)) 上指定了 *NOCNULRQD ,并且如果将字符串列的值分配给 C NUL 终止的主变量,并且该主变量足够大以包含结果,但不够大以包含 NUL-terminator ,那么包含 'N'。
SQLWARN2
sqlwarn [2]
SQLWARN (3)
SQLWN2
如果从函数的自变量中消除了空值,那么包含 "W"; 对于 MIN 或 MAX 函数,不一定设置为 "W" ,因为其结果不依赖于消除空值。
SQLWARN3
sqlwarn [3]
SQLWARN (4)
SQLWN3
如果列数大于主变量数,那么包含 "W"。
SQLWARN4
sqlwarn [4]
SQLWARN (5)
SQLWN4
如果预编译 UPDATE 或 DELETE 语句不包含 WHERE 子句,那么包含 "W"。
SQLWARN5
sqlwarn [5]
SQLWARN (6)
SQLWN5
包含字符值 1 (只读) , 2 (读取和删除) 或 4 (读取,删除和更新) ,以反映光标在 OPEN 语句之后的能力。
SQLWARN6
sqlwarn [6]
SQLWARN (7)
SQLWN6
如果日期算术导致月末调整,那么包含 "W"。
SQLWARN7
sqlwarn [7]
SQLWARN (8)
SQLWN7
保留
SQLWARN8
sqlwarn [8]
SQLWARN (9)
SQLWN8
如果字符转换的结果包含替换字符,那么包含 "W"。
SQLWARN9
sqlwarn [9]
SQLWARN (10)
SQLWN9
保留
SQLWARNA
sqlwarn [10]
SQLWARN (11)
SQLWNA
保留
表 3. SQLERRD 诊断信息
C 名称
COBOL 名称
PL/I 名称
ILE RPG 名称
RPG/400 名称
字段值
SQLERRD (1)
sqlerrd [0]
SQLERRD (1)
SQLER1
如果 SQLCODE 小于 0 ,那么包含 CPF 转义消息的最后四个字符。 例如,如果报文是CPF5715,X'F5F7F1F5'将被放在 SQLERRD(1).1 中

对于对过程的调用,包含在 RETURN 语句上指定的返回状态值。 如果未在 RETURN 语句上指定返回状态值,或者该过程是外部过程,

  • 如果 CALL 语句成功,那么将返回 0 ,或者
  • 如果 CALL 语句不成功,那么将返回 -1。
SQLERRD (2)
sqlerrd [1]
SQLERRD (2)
SQLER2
如果 SQL 代码小于 0 ,那么包含 CPD 诊断消息的最后四个字符。1

对于 CALL 语句, SQLERRD (2) 包含结果集的数量。

对于 OPEN 语句,\SQLERRD(2) 包含结果集中的估计行数。

SQLERRD (3)
sqlerrd [2]
SQLERRD (3)
SQLER3
对于 CONNECT for status 语句, SQLERRD (3) 包含有关连接状态的信息。 请参阅 CONNECT (type 2) 以获取更多信息。

对于 INSERT , MERGE , UPDATE , REFRESH 和 DELETE 显示受影响的行数。

对于 TRUNCATE 语句,值将为-1。

对于 FETCH 语句, SQLERRD (3) 包含访存的行数。

对于 PREPARE 语句,包含所选的估计行数。 如果行数大于 2 147 483 647 ,那么将返回 2 147 483 647。

SQLERRD (4)
sqlerrd [3]
SQLERRD (4)
SQLER4
对于 PREPARE 语句,包含每次执行所需的资源的相对数目估算。 此数字因索引的当前可用性,文件大小, CPU 型号等而异。 这是 Db2 for i Query Optimizer 选择的存取方案的估算成本。

对于 CONNECT 和 SET CONNECTION 语句, SQLERRD (4) 包含使用的对话类型以及是否可以执行可落实更新。 请参阅 CONNECT (type 2) 以获取更多信息。

对于 CALL 语句, SQLERRD (4) 包含导致过程失败的错误的消息键。 QMHRTVPM API 可用于返回消息密钥的消息描述。

对于 DELETE , INSERT MERGE , 或 UPDATE 语句中的触发器错误, SQLERRD (4) 包含从触发器程序发出信号的错误的消息键。 QMHRTVPM API 可用于返回消息密钥的消息描述。

对于 FETCH 语句,如果结果行不包含 LOB ,那么 SQLERRD (4) 包含检索的行的长度。

对于 OPEN 语句,如果结果行不包含 LOB ,那么 SQLERRD (4) 包含结果行的长度。

SQLERRD (5)
sqlerrd [4]
SQLERRD (5)
SQLER5

对于 CONNECT 或 SET CONNECTION 语句, SQLERRD (5) 包含:

  • -如果未连接,则为-1
  • 0 (如果连接是本地连接)
  • 1 (如果连接是远程的)

对于 DELETE , INSERT , MERGE 或 UPDATE 语句,显示受引用约束和触发器影响的行数。

对于 EXECUTE IMMEDIATE 或 PREPARE 语句,可能包含语法错误的位置。

对于多行 FETCH 语句,如果已访存表中当前的最后一行,那么 SQLERRD (5) 包含 +100。

对于 PREPARE 语句, SQLERRD (5) 包含预编译语句中的参数标记数。

SQLERRD (6)
sqlerrd [5]
SQLERRD (6)
SQLER6
当 SQLCODE 为 0 时,包含 SQL 完成消息标识。

在所有其他情况下,它是未定义的。

注:
1
仅当适当且仅当当前服务器为 Db2 for i时,才会设置 SQLERRD (1) 和 SQLERRD (2)。
表 4. 用于 CONNECT 和 SET CONNECTION 的 SQLERRMC 替换文本
描述 数据类型
关系数据库名 CHAR(18)
产品标识 (与 SQLERRP 相同) CHAR(8)
服务器作业的用户标识 CHAR(10)
连接方法 (*DUW 或 *RUW) CHAR(10)
DDM 服务器类名
QAS
Db2 for i
QDB2
Db2 for z/OS
QDB2/6000
Db2 对于 AIX®
QDB2/HPUX
Db2 用于 ** HP-UX
QDB2/LINUX
Db2 对于 Linux®
QDB2/NT
Db2 for Windows * * NT , 2000 和 XP
QDB2/SUN
Db2 for SUN* * Solaris * *
QSQLDS/VM
Db2 虚拟机服务器
QSQLDS/VSE
Db2 VSE 服务器
CHAR(10)
连接类型 (与 SQLERRD (4) 相同) SMALLINT