sysibm.SQLCAMessage 函数

缺省情况下,用于 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 代码检索本地化的错误消息。

此函数的定义使用 IN 、OUT 和 INOUT 参数:
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 
    
要调用此函数,可以使用此语法:
sysibm.SQLCAMessage
参数 描述 限制 语法
error_number 错误的 SQLCODE 必须存在 表达式
input_locale 接收消息的输入语言环境的名称。缺省为 U.S. English 语言环境(en_us 必须存在 标识符
message_file 消息文件的名称 必须存在 路径名

该函数从指定的 SQLCODE input_locale 的指定 message_file 检索文本。返回的代码表示调用执行 SQLCAMessage 例程成功或失败。

GBase 8s DRDA 应用程序试图使用指定的输出参数检索错误消息文本:

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 代码列表