SQLCA 中的字段具有以下含义:
sqlcaid 8 字节字符字段,包含作为 SQLCA 结构标识的字符串 SQLCA。在您查看内存内容时,该字段可帮助进行调试。
sqlcode 数据库在请求上检测到错误时,指定错误代码的长整数。错误代码的定义可在头文件 sqlerr.h 中找到。错误代码是 0(零)表示操作成功,正数表示警告,负数表示错误。
有关错误代码的完整列表,请参见错误消息。
sqlerrmc 要插入到错误消息中的零个或多个字符串。某些错误消息包含一个或多个占位符字符串(%1、%2、……),这些占位符字符串可由此字段中的字符串替换。
例如,如果生成 [未找到表
] 错误,则 sqlerrmc 包含表名,该表名会插入到错误消息中的相应位置。
有关错误消息的完整列表,请参见错误消息。
sqlstate SQLSTATE 状态值。除了 SQLCODE 值外,ANSI SQL 标准还定义了 SQL 语句的此种类型的返回值。SQLSTATE 值始终是一个由五个字符组成且以空值终止的字符串,它分为双字符类(前两个字符)和三字符子类。每个字符都可以是从 0 到 9 的数字或从 A 到 Z 的大写字母字符。
以 0 到 4 或 A 到 H 开头的任何类或子类都是由 SQL 标准定义的,其它类和子类则是各实现自行定义的。SQLSTATE 值 '00000' 表示还没有错误或警告。
有关更多的 SQLSTATE 值,请参见按 SQLSTATE 排序的 SQL Anywhere 错误消息。
sqlerror 字段数组具有以下元素。
sqlerrd[1] (SQLIOCOUNT) 完成某条语句所需的实际输入/输出操作数。
数据库服务器执行每条语句之前不会将此值设置为零。在执行一个语句序列之前,您的程序可以将此变量设置为零。执行完最后一条语句之后,该数字为整个语句序列的输入/输出操作的总数。
sqlerrd[2] (SQLCOUNT) 此字段的值取决于要执行的语句。
INSERT、UPDATE、PUT 和 DELETE 语句 受语句影响的行数。
OPEN 语句 在游标 OPEN 上,此字段由游标中的实际行数(大于或等于 0 的值)或它的估计值(绝对值为估计值的负数)填充。如果数据库服务器不统计该值即可计算出行数,则该值就是实际行数。也可以使用 row_counts 选项,将数据库配置为始终返回实际的行数。
FETCH 游标语句 如果返回 SQLE_NOTFOUND 警告,则填充 SQLCOUNT 字段。它包含 FETCH RELATIVE 或 FETCH ABSOLUTE 语句超出可能的游标位置(游标可以位于某一行上、第一行之前或最后一行之后)范围之外的行数。在宽读取的情况下,SQLCOUNT 是实际读取的行数,它小于或等于请求的行数。在宽读取过程中,只在未返回行的情况下才设置 SQLE_NOTFOUND。
有关宽读取的详细信息,请参见一次读取多个行。
如果未找到行但位置有效,则值为 0,例如,当定位到游标的最后一行上时执行 FETCH RELATIVE 1。如果所尝试的读取超出了游标的末尾,则为正值;如果所尝试的读取位于游标开头的前面,则为负值。
GET DATA 语句 SQLCOUNT 字段保存值的实际长度。
DESCRIBE 语句 在用于说明可能具有多个结果集的过程的 WITH VARIABLE RESULT 子句中,SQLCOUNT 设置为以下值之一:
0 结果集可能更改:应该在每个 OPEN 语句后重新描述过程调用。
1 结果集是固定的。不需要重新进行描述。
如果出现语法错误 SQLE_SYNTAX_ERROR,此字段包含语句内检测到错误的大致字符位置。
sqlerrd[3] (SQLIOESTIMATE) 完成语句所需的输入/输出操作的估计数。OPEN 或 EXPLAIN 语句将为此字段赋一个值。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |