缺省情况下,用于 JDBC 的 GBase Data Server Driver 和用于 GBase 8s 的 SQL 不返回本地化错误消息。但是当在连接 URL 中设置 "retrieveMessagesFromServerOnGetMessage=true" 属性时,需要来自服务器的详细和本地化的错误消息。
SQLCAMessage 函数是一个 SPL 例程,支持从远程 DB2 或 GBase 8s 数据库服务器到使用分布式关系数据库架构(DRDA)协议的客户端应用程序检索详细的错误消息文本。在配置为 DRDA 应用程序服务器的 GBase 8s 实例的每个数据库中自动创建 SQLCAMessage 例程。用于 JDBC 和 SQL 客户端应用程序 GBase Data Server 驱动程序必须指 'sysibm' 所有者名称,以从符合 ANSI 的数据库调用此函数。
SQLCAMessage 函数基于 SQL 通信区域(SQLCA)中的 SQLSTATE 代码检索本地化的错误消息。
CREATE function sysibm.SQLCAMessage ( IN SQLCode INTEGER, IN SQLErrml SMALLINT, IN SQLErrmc VARCHAR(70), IN SQLErrp CHAR(8), IN SQLErrd0 INTEGER, IN SQLErrd1 INTEGER, IN SQLErrd2 INTEGER, IN SQLErrd3 INTEGER, IN SQLErrd4 INTEGER, IN SQLErrd5 INTEGER, IN SQLWarn CHAR(11), IN SQLState CHAR(5), IN MessageFileName VARCHAR(20), INOUT Locale VARCHAR(33), OUT Message LVARCHAR(4096), OUT Rcode INTEGER) RETURNING INTEGER EXTERNAL NAME '(SQLCAMessage)' LANGUAGE C
参数 | 描述 | 限制 | 语法 |
---|---|---|---|
error_number | 错误的 SQLCODE 值 | 必须存在 | 表达式 |
input_locale | 接收消息的输入语言环境的名称。缺省为 U.S. English 语言环境(en_us) | 必须存在 | 标识符 |
message_file | 消息文件的名称 | 必须存在 | 路径名 |
该函数从指定的 SQLCODE 和 input_locale 的指定 message_file 检索文本。返回的代码表示调用执行 SQLCAMessage 例程成功或失败。
GBase 8s DRDA 应用程序试图使用指定的输出参数检索错误消息文本:如果 MessageFileName 参数 message_file 为 NULL ,则使用缺省的消息文件(errmsgtxt)。如果使用指定的 input_locale 检索失败,则使用缺省语言环境(en_us)来检索错误消息。如果适用,令牌数组用于替换检索的消息文本中的标记。
如果检索失败,则错误消息文本 "Message not found" 将出现在 Message 参数中。
对于这两种情况,OUT 参数 Rcod 设置为执行此 SPL 例程的返回码。
ISAM 错误的详细信息从 SQLERRD[0] 值提供。ISAM 错误消息连接到实际的错误消息字符串并返回到应用程序。
对于 SQLCAMessage 函数可以返回相应错误消息文本的 SQLSTATE 值的代码,请参阅 SQLSTATE 代码列表。