SQLERRM 标量函数-检索错误消息信息
有两个版本的 SQLERRM 标量函数。 第一个选项允许完全灵活地进行消息检索,包括使用消息标记和语言选择。 第二个仅采用 SQLCODE 作为输入参数,并以英语返回短消息。
SQLERRM 标量函数
此 SQLERRM 标量函数采用消息标识,语言环境和令牌输入,并返回指定语言环境中的短消息或长消息。 如果服务器不支持输入语言环境,那么将以英语返回消息。
语法
模式为 SYSPROC。
标量函数参数
- 消息标识
- 类型为 VARCHAR (9) 的输入参数,表示应该检索其信息的消息号。 消息号是以 "SQL" , "DBA" 或 "CLI" 为前缀的应用程序返回码。 例如, "SQL551" , "CLI0001"。 消息号也可以是 SQLSTATE ,例如 "42829"。
- 令牌
- 类型为 VARCHAR (70) 的输入参数,用于表示错误消息令牌列表。 某些消息可能没有令牌。 如果此参数为空,那么在返回的消息中不会发生令牌替换。 仅当返回缺省短消息时,才会发生令牌替换。 如果选择了长消息选项,那么不会发生令牌替换。
- token_delimiter
- 类型为 VARCHAR (1) 的输入参数,用于表示令牌定界符。 此定界符必须是唯一的,并且不包含在传递到标量函数的任何标记中。 如果未提供定界符,那么使用的缺省定界符为分号。
- 语言环境
- 类型为 VARCHAR (33) 的输入参数,表示要传递到服务器的语言环境,以便以该语言检索错误消息。 如果未指定语言环境,或者服务器不支持该语言环境,那么将以英语返回消息并返回警告。
- 短消息
- 类型为 INTEGER 的输入参数,用于指示是否应返回长消息而不是缺省短消息。 要返回长消息,必须将此值设置为 0 或 CAST (NULL 作为 INTEGER)。
权限
需要下列其中一项权限才能执行此例程:
- 对例程的 EXECUTE 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
缺省 PUBLIC 特权
在非限制性数据库中,当自动创建该功能时,将向 PUBLIC 授予 EXECUTE 特权。
返回的信息
结果的数据类型为 VARCHAR (32672)。
示例
示例 1: 使用标记 "AYYANG" , "UPDATE" 和 "SYSCAT.TABLES" 检索 SQL0551N 的英语短消息。
VALUES (SYSPROC.SQLERRM
('SQL551', 'AYYANG;UPDATE;SYSCAT.TABLES', ';', 'en_US', 1))
以下是返回的输出示例。
1
--------------------------------------------------------------...--
SQL0551N "AYYANG" does not have the privilege to perform operation
"UPDATE" on object "SYSCAT.TABLES"
示例 2: 检索与 SQLSTATE 42501 关联的英语错误消息。
VALUES (SYSPROC.SQLERRM ('42501', '', '', 'en_US', 1))
以下是返回的输出示例。
1
---------------------------------------------------------------...--
SQLSTATE 42501: The authorization ID does not have the privilege to
perform the specified operation on the identified object.
示例 3: 检索 SQL1001N的英语长错误消息。
VALUES (SYSPROC.SQLERRM ('SQL1001', '', '', 'en_US', 0))
以下是返回的输出示例。
1
------------------------------------------------------------...--
SQL1001N "<name>" is not a valid database name.
Explanation:
The syntax of the database name specified in the command is not
valid. The database name must contain 1 to 8 characters and all
the characters must be from the database manager base character
set.
The command cannot be processed.
User Response:
Resubmit the command with the correct database name.
sqlcode : -1001
sqlstate : 2E000
SQLERRM 标量函数
此 SQLERRM 标量函数采用 SQLCODE 作为唯一输入,并以英语返回指定 SQLCODE 的短消息。
语法
模式为 SYSPROC。
标量函数参数
- sqlcode
- 类型为 INTEGER 的输入参数,用于表示 SQLCODE。
权限
需要下列其中一项权限才能执行此例程:
- 对例程的 EXECUTE 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
缺省 PUBLIC 特权
在非限制性数据库中,当自动创建该功能时,将向 PUBLIC 授予 EXECUTE 特权。
返回的信息
结果的数据类型为 VARCHAR (32672)。
示例
检索 SQLCODE SQL0551N的短消息。
VALUES (SYSPROC.SQLERRM (551))
以下是返回的输出示例。
1
--------------------------------------------------------------...--
SQL0551N "" does not have the privilege to perform operation
"" on object "".