SQL20500 - SQL20999

SQL20500N 在值列表中使用行数据类型值无效。

说明

在列表中使用行类型无效。

在列表中对行变量的无效用法包括:

  • 在赋值语句的源变量的列表中使用,或者在更新操作的赋值子句中使用。
  • 在简单赋值语句的目标变量的列表中使用,或者在 SELECT INTO、FETCH 或 VALUES INTO 语句中的赋值语句中使用。
  • 在插入操作的 VALUES 子句中代表某一行的表达式列表中使用。

无法执行该语句。

用户响应

重新编写该语句,以使该列表不包含行变量或者将该列表替换为单一行变量值。

sqlcode:-20500

sqlstate:428HR

SQL20501N 说明工具失败,因为找不到所指定的部分。原因码:原因码

说明

调用了说明工具,以便在某部分中提供存取方案信息,但是未找到所指定的部分。原因码如下所示:

1

在所指定源位置找不到指定的可执行文件标识所标识的节。

2

在所指定活动事件监视器中找不到指定的活动信息所标识的节。

3

在目录中找不到指定的程序包和节信息所标识的节。

4

活动事件监视器未捕获此部分。

用户响应

与原因码对应的用户响应是:

1

验证是否正确指定了可执行文件标识和部分源位置。请确认具有所指定可执行文件标识的节是否仍存在于源位置。如果源位置是内存程序包高速缓存,那么可能已从高速缓存中移除了此部分。在这种情况下,不能执行任何进一步的操作。

2

请验证指定的活动信息是否正确并与所指定活动事件监视器所捕获的活动相对应。

3

请验证指定的程序包和节信息是否与目录中的节相对应。

4

请确保使用工作负载管理对象上的 COLLECT ACTIVITY WITH DETAILS, SECTION 子句为感兴趣的活动启用了部分集合。

sqlcode: -20501

sqlstate: 4274L

SQL20502N 说明工具失败,因为所指定的活动事件监视器 事件名 不是一个“写入表”事件监视器。

说明

已经调用了说明工具,以便在活动事件监视器所捕获的节提供存取方案信息。事件监视器必须是一个“写入表”事件监视器。指定为节源位置的活动事件监视器不是一个“写入表”事件监视器。

用户响应

提供“写入表”活动事件监视器的名称。可以使用 CREATE EVENT MONITOR ...WRITE TO TABLE 语句来创建“写入表”事件监视器。

sqlcode:-20502

sqlstate:55074

SQL20503N 说明工具不支持所指定的节。原因码:原因码

说明

已调用说明工具,以便根据某个节提供存取方案信息,但该节不支持此操作。原因码指示了故障原因:

1

作为输入指定的节是在 DB2 V9.7 以前的发行版中捕获的。说明工具不可用于从 DB2 V9.7 以前的发行版中捕获的节。

2

作为输入指定的节是在当前 DB2 版本以前的发行版中捕获的,说明工具不再支持该发行版中的节。

3

作为输入指定的节是在高于当前 DB2 版本的发行版中捕获的。说明工具不可用于从高于当前发行版的发行版中捕获的节。

4

无法将作为输入指定的节识别为有效的节。

5

该节未包含存取方案信息。DDL 之类的语句的某些节不包含存取方案。不能对这些节使用说明工具。

6

由于该语句无效,因此该节不存在。在绑定程序包时,该语句出错。

7

由于该语句是增量绑定语句,因此该节不存在。增量绑定语句不会在目录中存储任何节。这些语句将在应用程序进程的执行期间进行绑定。

用户响应

根据原因码作出的响应为:

1

在指定从有效发行版中捕获的节的情况下调用说明工具。

2

在指定从有效发行版中捕获的节的情况下调用说明工具。

3

在指定从有效发行版中捕获的节的情况下调用说明工具。

4

在指定有效节作为输入的情况下调用说明工具。

5

在指定了包含存取方案信息的节的情况下调用说明工具。

6

如果应该在此数据库服务器上执行该语句,请解决所找到的问题,然后在指定了 ACTION REPLACE 选项的情况下重新发出 PRECOMPILE 或 BIND 命令。解决问题后,再次尝试运行说明工具。

7

要将说明工具用于增量绑定语句的节,请遵循类似于动态语句的过程:绑定该语句后,在程序包高速缓存中标识该语句,然后在指定了该语句的节的相应可执行文件标识的情况下调用说明工具。

sqlcode:-20503

sqlstate:55075

SQL20504N 语句失败,因为锚点数据类型的目标对象不受支持,或在不受支持的上下文中使用。

说明

锚点数据类型是定义为与另一对象相同的数据类型。如果底层对象数据类型变更,那么锚点数据类型也会更改。锚点数据类型可以引用大量对象,但不能引用某些对象。

尝试引用锚点数据类型中不受支持的目标,或引用不受支持上下文中锚点数据类型的目标时,将返回此消息。

用户响应

移除任何不受支持或在不受支持的上下文中使用的锚点数据类型,然后重新发出该语句。

sqlcode:-20504

sqlstate:428HS

SQL20505N WITH ORDINALITY 子句与关联数组的 UNNEST 配合使用时无效。

说明

当 UNNEST 表函数的自变量是关联数组时,不能指定 WITH ORDINALITY 子句。关联数组并非根据序数位置进行组织。

用户响应

请除去 WITH ORDINALITY 子句,或者将 UNNEST 函数的自变量更改为常规数组。再次尝试执行该语句。

sqlcode:-20505

sqlstate:428HT

SQL20506N 在对游标变量指定游标构造函数值的作用域外部的 OPEN 语句中,无法使用游标变量。

说明

在对游标变量指定游标构造函数值的作用域外部的 OPEN 语句中,无法使用游标变量。

用户响应

在对游标变量指定游标构造函数的同一作用域内的 OPEN 语句中,请使用游标变量。

sqlcode:-20506

sqlstate:51044

SQL20507N 与 OPEN 或 FETCH 语句中使用的游标变量相关联的查询使用同一个游标以递归方式调用另一项游标操作。

说明

与 OPEN 或 FETCH 语句中使用的游标变量相关联的查询包含对一个函数的调用,该函数将游标变量作为自变量进行传递,并且该游标自变量用于在该函数中执行某个游标操作。如果该查询指定的变量名与游标操作中指定的变量名相同,或者指定的游标变量引用了同一游标,那么该函数将对同一游标进行递归操作。这样的递归游标操作不受支持。

无法处理该语句。

用户响应

请更改与 OPEN 或 FETCH 语句中使用的游标变量相关联的查询,以使传递游标变量自变量的函数使用另一个未与该 OPEN 或 FETCH 语句引用同一个游标的游标变量。再次尝试执行该语句。

sqlcode:-20507

sqlstate:24525

SQL20508N 重新验证对象 对象名 期间发生错误。操作 操作 失败,SQLCODE 为 sqlcode,SQLSTATE 为 sqlstate,消息标记为 标记列表

说明

SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS 过程处理语句 操作 失败。处理期间遇到错误。提供了 SQLCODE、SQLSTATE 和消息标记列表(各个标记由竖线字符分隔)。消息标记可能已被截断。请参阅 sqlcode 的相应消息以获取该错误的进一步解释。

用户响应

检查与失败的 SQL 语句的 SQLCODE 相关联的消息。遵循该消息所建议的操作。

sqlcode:-20508

sqlstate:5UA03

SQL20509N 未处理该语句,因为所指定的别名无法用作该语句的目标。所指定的别名:别名

说明

当您创建新的数据库对象时,使用 CREATE 语句指定该新对象的名称。创建该对象之后,您还可以为该对象定义一个或多个别名。

当必须指定对象名而不是指定别名时,如果指定了别名作为语句的目标,那么会返回此消息。

用户响应

指定别名 别名 所表示的对象名,而不是指定别名,然后重新提交该 SQL 语句。

sqlcode:-20509

sqlstate:560CT

SQL20510N 用于复合 SQL(编译型)语句的上下文无效。

说明

可以在上下文中使用下列复合 SQL(编译型)语句:

  • 作为一个独立语句
  • 作为 SQL 过程的主体
  • 作为 SQL 标量函数的主体
  • 当未使用下列子句来定义触发器时,将复合 SQL 语句作为触发器的主体:
    • FOR EACH STATEMENT 子句
    • REFERENCING OLD TABLE 子句
    • REFERENCING NEW TABLE 子句

用户响应

请执行下列其中一项操作并再次尝试该请求:

  • 除去无效的复合 SQL(编译型)语句。
  • 将无效的复合 SQL(编译型)语句替换为复合 SQL(直接插入型)语句。
  • 如果在触发器定义中使用复合 SQL(编译型)语句,请修改触发器定义,以便除去限制使用此类语句的子句。

sqlcode:-20510

sqlstate:429C6

SQL20511N 尝试将数据放入消息缓冲区失败,因为该消息缓冲区中没有足够的可用空间。消息缓冲区名称:缓冲区名称

说明

由于消息缓冲区中的可用空间量不足以容纳数据,因此尝试将数据放入该缓冲区失败。

用户响应

通过下列其中一种方式对此消息作出响应:

  • 对于 DBMS_OUTPUT 缓冲区,执行下列其中一项操作:
    • 调用 DBMS_OUTPUT.GET_LINE 过程或 DBMS_OUTPUT.GET_LINES 过程以从本地消息缓冲区中检索数据,从而释放空间。
    • 使用 DBMS_OUTPUT.ENABLE 过程来增大缓冲区大小。
  • 对于 DBMS_PIPE 缓冲区,请调用 DBMS_OUTPUT.SEND_MESSAGE 函数,以便通过管道发送消息缓冲区中的内容。
  • 对于 UTL_TCP.READ_LINE 缓冲区,请减小发送方所传输的每行数据的数据量。

sqlcode:-20511

sqlstate:5UA0P

SQL20512N 先前未通过 DBMS_ALERT.REGISTER 过程注册任何警报。

说明

先前未通过 DBMS_ALERT.REGISTER 过程为当前会话注册任何警报。

用户响应

请调用 DBMS_ALERT.REGISTER 过程以注册警报。

sqlcode:-20512

sqlstate:5UA04

SQL20513N UTL_FILE 过程 过程名称 未能删除或重命名文件 文件名。操作系统错误:错误文本

说明

模块 UTL_FILE 中的过程 过程名称 未能删除或重命名指定的文件 文件名,它从操作系统接收到错误 错误文本

用户响应

系统错误 错误文本 提供了更多有关错误情况的详细信息,适当的响应可能是:验证该过程的自变量是否有效。验证文件 文件名 是否存在并具有适当的属性。如果正在将文件 文件名 重命名,请验证目标文件是否不存在,或者将 OVERRIDE 参数设置为 TRUE。

sqlcode:-20513

sqlstate:5UA0C 和 5UA0D

SQL20514N UTL_SMTP 模块例程遇到 SMTP 服务器错误。SMTP 错误代码:错误代码

说明

UTL_SMTP 模块例程遇到瞬时或永久性 SMTP 服务器错误。

用户响应

错误代码 错误代码 提供了更多有关所遇到的特定 SMTP 错误的详细信息。如果错误代码值在范围 400 到 499 之内,那么表明该错误是瞬时错误,并且同一个请求以后可能会成功。如果错误代码值在范围 500 到 599 之内,那么表明该错误是永久性错误,并且准确的错误代码可以帮助您确定如何解决该错误情况。您可能需要与负责管理 SMTP 服务器的人员联系以请他们修正 SMTP 服务器的错误,您也可以选择另一 SMTP 服务器。

sqlcode:-20514

sqlstate:5UA0E 和 5UA0F

SQL20515N 在游标值构造函数中,不能使用动态语句名称。

说明

在游标值构造函数中指定了动态语句名称,但该游标值构造函数:

  • 还在游标值构造函数参数列表中指定了一个或多个已命名的参数。
  • 被赋值给具有强类型化游标数据类型的变量。

无法处理该语句。

用户响应

请执行下列其中一项操作并再次尝试该请求:

  • 将动态语句名称替换为 SELECT 语句。
  • 从该游标值构造函数中除去参数列表。
  • 将该游标变量更改为弱类型化游标数据类型。

sqlcode:-20515

sqlstate:428HU

SQL20516W 编译语句成功,但无法保留此语句的存取方案。原因码:原因码

说明

已在 BIND、REBIND 或 PRECOMPILE 期间成功地编译此语句,但无法保留先前的存取方案。原因码如下所示:

101

此程序包上次在 DB2 V9.7 以前的版本中进行绑定或重新绑定。无法保留由 DB2 V9.7 以前的版本生成的节的存取方案。

102

此程序包上次在低于所安装版本的数据库产品版本中进行了绑定或重新绑定,但在所安装版本中,无法保留来自先前版本的存取方案。

103

此程序包上次在高于所安装版本的数据库产品版本中进行了绑定或重新绑定,但在较低版本中,可能无法保留来自较高版本的存取方案。如果将安装的数据库管理器版本恢复为先前的修订包级别或版本,那么可能会发生这种情况。

104

此程序包中的某个节未被识别为有效节。

105

在现有程序包中找不到该查询。原因可能是:引入了新语句、语句文本已更改或者在源文件中创建了新的主变量。

106

该查询的内部表示已更改,导致先前存取方案不再适用。可能已发生的更改的示例包括:更改了所引用的数据库对象、更改了数据库管理器的配置以及更改了 SQL 查询编译器。

107

由于编译查询时所处的环境已更改,因此查询编译器不再能够生成同一个存取方案。这方面的示例包括:先前存取方案所访问的索引不再存在,或者正在以不同于先前优化级别的优化级别来编译查询,并且新优化级别不允许使用先前选择的存取方案策略。

用户响应

在大多数情况下,您可以选择忽略此警告;这是因为,无法保留先前存取方案可能是所期望的正常数据库对象更改或数据库配置更改的结果。在某些情况下,您可能想监视查询性能,或者想使用说明工具来检查存取方案并将其与以前为同一查询生成的存取方案进行比较。然后,您可以遵循已接受的查询性能调整和监视过程,以便验证查询性能是否优良并在必要时提高性能。为了避免返回此警告,请根据原因码执行下列其中一项操作:

101

在启用 BIND、REBIND 或 PRECOMPILE 命令的存取方案复用选项之前,在不低于 DB2 V9.7 的版本中绑定或重新绑定该程序包。

102

在启用 BIND、REBIND 或 PRECOMPILE 命令的存取方案复用选项之前,在所安装的版本中绑定或重新绑定该程序包。

103

在启用 BIND、REBIND 或 PRECOMPILE 命令的存取方案复用选项之前,在所安装的版本或者其存取方案能够由所安装版本复用的版本中绑定或重新绑定该程序包。

104

要报告此意外结果,请与 IBM 软件支持机构联系,并提供 db2diag 诊断日志文件以及诊断目录路径(由 DIAGPATH 数据库管理器配置参数指定)的内容。

105

如果有必要保留此查询的现有存取方案,请不要重新格式化查询、更改查询或者引用新的主变量。此外,您可以确认新存取方案令人满意。

106

如果有必要保留此查询的现有存取方案,请不要更改所引用的数据库对象或者数据库管理器配置(在某些情况下,可能会由于数据库管理器代码更改而无法复用存取方案)。此外,您可以遵循已接受的查询性能调整和监视过程以便验证查询性能是否符合预期。

107

如果有必要保留此查询的现有存取方案,请不要更改所引用的数据库对象、数据库管理器配置或优化选项。此外,您可以遵循已接受的查询性能调整和监视过程以便验证查询性能是否符合预期,也可以使用说明工具诊断信息来检查无法保留先前存取方案的原因。

sqlcode:+20516

sqlstate:01602

SQL20518N 操作无效,这是因为无序调用了 UTL_SMTP 模块例程 例程名称

说明

SMTP 协议要求按特定顺序执行操作。虽然调用了 例程名 例程,但是 SMTP 协议要求在执行另一项操作之后,才能成功完成此例程已尝试执行的操作。例如,必须在成功完成 UTL_SMTP.OPEN_DATA 例程之后才能调用 UTL_SMTP.WRITE_DATA 例程,必须在成功完成 UTL_SMTP.MAIL 例程之后才能调用 UTL_SMTP.RCPT 例程。

用户响应

请参阅 SMTP 协议并确保按正确顺序调用了 UTL_SMTP 模块例程。

sqlcode:-20518

sqlstate:5UA0N

SQL20519N 本地消息缓冲区中没有要解包的数据。

说明

可以调用其中一个 DBMS_PIPE.UNPACK_MESSAGE 过程,以接收本地消息缓冲区中的下一个数据项并将此数据分配给某个变量。当本地消息缓冲区中不再有要接收的数据时就会返回此消息。

用户响应

在调用其中一个 DBMS_PIPE.UNPACK_MESSAGE 过程之前,更改应用程序逻辑以检查 DBMS_PIPE.NEXT_TYPE() 是否返回了一个非零值。

sqlcode:-20519

sqlstate:55019

SQL20521N 处理 字符串 附近的条件编译伪指令时出错。原因码:rc

说明

SQL 编译器正在处理包含条件编译伪指令的语句。在标记 字符串 中给出的语句文本附近发生错误。可能的原因由原因码指定。

1

选择伪指令中的全局变量引用不具有有效的数据类型。有效数据类型是 BOOLEAN、INTEGER 或 VARCHAR。

2

选择伪指令中的全局变量引用未被定义为常量。

3

选择伪指令中的全局变量引用被定义为常量,但要求对一个表达式进行求值。

4

找到一个常量,但该常量不是 BOOLEAN、INTEGER 或 VARCHAR 常量。

5

搜索条件指定了不受支持的表达式或谓词。

6

指定了无效的条件编译伪指令。使用了单一下划线字符(或 $ 符)作为前缀,但随后的字符未与受支持的条件编译伪指令匹配。

7

在不支持条件编译伪指令的上下文中指定了条件编译伪指令。

8

在选择伪指令的代码片段中指定了新的选择伪指令。不支持嵌套选择伪指令。

9

未正确地指定选择伪指令的关键字。缺少必需的关键字,或者以不正确的顺序使用了关键字。

10

由于 SQL_CCFLAGS 数据库配置参数的值无效,因此未能处理查询伪指令。

用户响应

请根据原因码来更正错误。

1

更改或除去选择伪指令中的全局变量引用,或者替换全局变量以使其具有受支持的数据类型。

2

更改或除去选择伪指令中的全局变量引用,或者替换全局变量以使用 CONSTANT 子句对其进行定义。

3

更改或除去选择伪指令中的全局变量引用,或者替换全局变量以使用带有简单文字值的 CONSTANT 子句对其进行定义。

4

将该常量替换为 BOOLEAN、INTEGER 或 VARCHAR 常量。

5

确保搜索条件未包含任何表达式,并确保只使用基本谓词或 NULL 谓词。除去任何不受支持的表达式或谓词。

6

确保条件编译前缀字符只与受支持的伪指令配合使用。如果您打算使用查询伪指令,那么必须使用两个前缀字符。如果您不打算使用条件编译,那么必须使用双引号字符对标识进行定界或者除去下划线字符(或 $ 符)。

7

确保在有效的上下文中使用编译伪指令。有效上下文包括:SQL 过程定义、编译型 SQL 函数定义、编译型触发器定义以及 PL/SQL 程序包定义。

8

确保已启动的选择伪指令结束前不启动任何选择伪指令。在不进行嵌套的情况下使用独立的选择伪指令,或者使用附加的 _ELSEIF 或 _ELSE 块来确定要选择编译的代码片段。

9

检查选择伪指令的语法,以确保每个 _IF 和 _ELSEIF 之后都有相应的 _THEN 关键字。并且,确保 _END 关键字完成选择伪指令。

10

请执行以下步骤:

  1. [可选] 使用 CURRENT SQL_CCFLAGS 专用寄存器暂时覆盖 SQL_CCFLAGS 数据库配置参数。
  2. 将 SQL_CCFLAGS 数据库配置参数设置为有效值。

sqlcode:-20521

sqlstate:428HV

SQL20522N 由于 WITHOUT OVERLAPS 子句的规范无效而使得此语句失败。原因码:原因码

说明

由于下列其中一个原因,指定 WITHOUT OVERLAPS 子句是无效的:

1

如果表分区键包括 BUSINESS_TIME 时间段的开始列或结束列,那么分区索引不能指定 BUSINESS_TIME WITHOUT OVERLAPS。

2

不能在约束子句中指定所指定时间段的列。

3

对于 DB2 for Linux, UNIX, and Windows 数据库服务器,只能在 CREATE INDEX 语句中指定 WITHOUT OVERLAPS,并且仅当索引被定义为 UNIQUE 时才能指定。对于 DB2 for z/OS,仅当索引被定义为 UNIQUE 或 UNIQUE WHERE NOT NULL 时,才能在 CREATE 或 ALTER INDEX 语句中指定 WITHOUT OVERLAPS。

4

如果表分布键包括 BUSINESS_TIME 时间段的开始列或结束列,那么唯一索引不能指定 BUSINESS_TIME WITHOUT OVERLAPS。

5

不能在索引规范中指定所指定时间段的列。

无法处理该语句。

用户响应

更正语法并重新提交该语句。

sqlcode:-20522

sqlstate:428HW

SQL20523N 表名 已指定为历史记录表,但是表定义对于历史记录表无效。原因码:原因码

说明

对于在 CREATE 或 ALTER 语句中指定为历史记录表的表,表定义由于下列原因码所指示的原因而无效:

1

此表不能是现有的系统时间段时间表、历史记录表、已声明的全局临时表、已创建的全局临时表、具体化查询表、类型表或者视图。对于 DB2 for z/OS 服务器,此表还不能是辅助表、克隆表、对其定义了克隆的表或者为 XML 列隐式创建的表。

2

对于 DB2 for z/OS 服务器,此表不能具有不完整的表定义。

3

对于 DB2 for z/OS 服务器,此表必须是表空间中唯一的表。

4

此表不能包含标识列、“行更改时间戳记”列、“行开始”列、“行结束”列、“事务开始标识”列或者所生成的表达式列。

5

此表不能包括时间段定义。

6

此表不能涉及到任何引用完整性约束。

7

历史记录表必须与用作系统时间段时间表的表具有相同的列数和列顺序。

8

此表不能包含安全标号列,也不能具有相关联的安全策略。

9

对于 DB2 for z/OS 服务器,如果系统时间段时间表的某列定义为 ROWID,那么应当将相应的历史记录列定义为具有相同生成属性(GENERATED ALWAYS 或者 GENERATED BY DEFAULT)的 ROWID。

10

对于系统时间段时间表和相关联的历史记录表,它们的相应列必须具有下面这些相同的属性:

  • 名称
  • 数据类型
  • 长度(包括直接插入的 LOB 长度、精度和小数位)
  • null 属性
  • 隐藏的属性
  • 字段过程(仅适用于 DB2 for z/OS)
  • 子类型(FOR BIT、SBCS 或 MIXED DATA 属性)和 CCSID
11

对于 DB2 for z/OS 服务器,不能对此表定义列掩码或者行许可权。

无法处理该语句。

用户响应

更正语法并重新提交该语句。

sqlcode:-20523

sqlstate:428HX

SQL20524N 由于时间段 时间段名称 的时间段规范或者 period 子句无效而使得此语句失败。原因码:原因码

说明

时间段规范或 period 子句由于下列原因码所指示的原因而无效:

1

为表引用多次指定了时间段名称。

2

指定了 SYSTEM_TIME 时间段,但是此表不是系统时间段时间表。

3

由于下列其中一个原因,不支持指定表达式:

  • 此表达式包含无效操作数
  • 此表达式返回不受支持的数据类型
4

对于 DB2 for LUW 服务器,对视图指定了时间段规范,视图定义中包括其数据指示不为 NO SQL 的已编译函数或外部函数。

5

对于 DB2 for z/OS 服务器,表达式中不能包括时区,并且精度不能大于此时间段的各列的精度。

6

指定了 FOR SYSTEM_TIME,但是 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器的值不为 null,并且 SYSTIMESENSITIVE 绑定选项设置为 YES。

7

指定了 FOR BUSINESS_TIME,但是 CURRENT TEMPORAL BUSINESS_TIME 专用寄存器的值不为 null,并且 BUSTIMESENSITIVE 绑定选项设置为 YES。

8

为一个不是应用程序时间段时间表的表指定了 period 子句,或者为一个视图指定了 period 子句(在视图定义的最外部的 FROM 子句中未引用应用程序时间段时间表),或者对此视图定义了 INSTEAD OF 触发器。

9

为昵称或远程对象指定了时间段规范或 period 子句。

无法处理该语句。

用户响应

更正语法并重新提交该语句。

sqlcode:-20524

sqlstate:428HY

SQL20525N 所请求的操作对于 表名 表无效,因为此表的类型错误。原因码:原因码

说明

由于原因码所指出的原因而无法按指定方式使用此表:

1

为 ALTER TABLE 语句指定了 ADD PERIOD 子句,但是,此表是历史记录表,不能为历史记录表定义时间段。

2

为 ALTER TABLE 语句指定了 DROP PERIOD 子句,但是,此表是系统时间段时间表,不能删除时间段。

3

为 ALTER TABLE 语句指定了 ALTER VERSIONING 子句,但是,此表不是系统时间段时间表。

4

为 ALTER TABLE 语句指定了 DROP VERSIONING 子句,但是,此表不是系统时间段时间表。

5

为 ALTER TABLE 语句指定了带有 RESTRICT 关键字的 DROP VERSIONING 子句,但是,如果有任何触发器、函数、过程、视图或具体化查询表引用了此表中历史版本的行,那么将不能删除系统数据版本控制。

6

对于系统时间段时间表或者历史记录表,为 ALTER TABLE 语句指定了 DROP PARTITION 子句。

7

对于 DB2 for z/OS,对于系统时间段时间表或者历史记录表,为 ALTER TABLE 语句指定了 ROTATE PARTITION 子句。

8

对于 DB2 for z/OS,对于一个是系统时间段时间表或者历史记录表的表,为 ALTER TABLE 语句指定了 ADD CLONE 子句。

9

TRUNCATE 语句尝试截断某个表,但此表是系统时间段时间表。

10

对于 DB2 for z/OS,ALTER TABLESPACE 语句尝试改变其中包含系统时间段时间表或历史记录表的表空间的 CCSID。

11

CREATE 或 ALTER TABLE 语句尝试定义引用约束,而父表或子表是历史记录表。

12

对于 DB2 for Linux, UNIX, and Windows,对系统时间段时间表指定了带有 DETACH PARTITION 子句的 ALTER TABLE 语句。

13

对于历史记录表,为 ALTER TABLE 语句指定了 ADD COLUMN 子句。

16

指定了 ALTER TABLE 语句以将生成列添加至系统时间段时间表。

17

对于 DB2 for Linux, UNIX, and Windows,对于系统时间段时间表或者历史记录表,为 ALTER TABLE 语句指定了 ACTIVATE NOT LOGGED INITIALLY。

18

对于 DB2 for Linux, UNIX, and Windows,对于系统时间段时间表或者历史记录表,为 ALTER TABLE 语句指定了 ADD SECURITY POLICY。

用户响应

更改此语句,以指定可以对其执行此操作的表的名称,或者为此表指定另外的操作。

sqlcode:-20525

sqlstate:428HZ

SQL20526N 变量 变量名 是两个或更多未定义分配顺序的分配的目标。

说明

某个变量是两个或更多未定义分配顺序的分配的目标。当“SET 变量”语句左边的变量也用作“SET 变量”语句右边的函数的输出参数时,就会发生变量的多次分配。

在以下示例中,假定函数 my_function 是使用一个 OUT 参数声明的。变量 my_variable 是示例中两个分配的目标。

CREATE VARIABLE my_variable INTEGER;

SET my_variable = my_function( my_variable );

用户响应

请将一个或多个变量引用更改为其他变量。

sqlcode:-20526

sqlstate:42810

SQL20527N 此语句失败,因为所引用的时间段 时间段名称 不是表 表名 中的时间段。

说明

表名 中不存在具有所指定的 时间段名称 的时间段。

无法处理该语句。

用户响应

请验证在 SQL 语句中是否正确指定了时间段名称和表名(包括任何必需的限定符)。重新提交该语句。

sqlcode:-20527

sqlstate:4274M

SQL20528N 数据更改操作的目标是表 表名,此表包括时间段 时间段名称。数据更改操作失败,因为它尝试修改的行也被另一个事务修改。

说明

表名 是一个系统时间段时间表。此表中包括时间段 时间段名称。所请求的数据更改操作尝试更改已经被另一个事务修改的行,并且这将导致历史记录表中相关联行的行开始列值大于结束列值。这种情况可能是由于下列其中一种原因而发生:

  • 在失败语句的事务启动之后,另一个事务已更新或插入了一行。这导致行开始列中的时间戳记值晚于失败语句在更新或删除该行时将要使用的时间戳记值。
  • 已将数据装入到系统时间段时间表中,并且行开始列的值覆盖了生成的值。相对于失败事务将要使用的时间戳记,已装入的行开始列值是将来的值。

无法执行所请求的操作。

用户响应

重试该语句。可以设置 systime_period_adj 配置参数,以允许调整受影响的值,从而使这些值是唯一值。请与系统管理员联系。

sqlcode:-20528

sqlstate:57062

SQL20529N WRAP 函数的自变量或 CREATE_WRAPPED 过程的参数无效。

说明

WRAP 函数或 CREATE_WRAPPED 过程的自变量是无效 SQL PL 或 PL/SQL 语句。

用户响应

确保 WRAP 函数或 CREATE_WRAPPED 过程的该自变量有效。如果不受支持的应用程序服务器已包括该语句,那么不能使用此 DB2 版本处理该语句。

sqlcode:-20529

sqlstate:5UA0O

SQL20530N 模糊语句无效。原因码:rc

说明

处理包括 WRAPPED 子句的数据定义语句时发生错误。原因可能是:

1

语句回绕在不受支持的平台或版本上。

2

语句的模糊部分已损坏。

用户响应

请确保语句回绕在支持的平台上且该语句未损坏。

sqlcode:-20530

sqlstate:42638

SQL20531N 在二进制 XML 值中所指定的版本号 流版本 不受支持。受支持的最高版本为 最高版本

说明

所指定的版本不支持二进制 XML 格式。如果受支持的最高版本的值为 0(零),那么说明此平台不支持二进制 XML 格式。如果所指定的版本号的值为 *N,那么说明无法确定版本,因为服务器未能读取二进制 XML 格式。

用户响应

请使用支持二进制 XML 格式的服务器。

sqlcode:-20531

sqlstate:22544

SQL20532N 命令或 API 函数调用失败,因为已不再使用此命令或 API 函数。命令或 API 函数名称:命令或函数名称

说明

如果尝试运行已不再使用的命令或者调用已不再使用的 API 函数,那么会返回此消息。

用户响应

使用另外的命令或 API 函数来完成同一任务。

更新自动运行的脚本和应用程序,以使用另外的命令或 API 函数来完成同一任务。

sqlcode:-20532

sqlstate:560CZ

SQL20533N SELECT 语句失败,因为在 typed-correlation 子句中指定了不受支持的数据类型。具有不受支持的数据类型的列:列名

说明

SELECT 语句的子查询中的 typed-correlation 子句用来定义由一般表函数生成的表的外观和内容。

如果 typed-correlation 子句中所指定的数据类型不受支持,那么会返回此消息。

用户响应

在 typed-correlation 子句中仅指定受支持的数据类型的情况下再次执行 SELECT 语句。

sqlcode:-20533

sqlstate:429BB

SQL20534W 模式 模式名 包括一个或多个具有属性 数据捕获选项-1 的表,而此属性不同于模式属性 数据捕获选项-2

说明

此模式中的一个或多个表的 DATA CAPTURE 设置不同于模式级别设置。

您可以在表级别和模式级别设置不同的 DATA CAPTURE 属性,因为表的 DATA CAPTURE 属性设置独立于模式级别的设置。

在模式级别设置 DATA CAPTURE 属性之后,如果在表级别未指定设置,那么新创建的表将继承模式级别的设置。

用户响应

要查找将 DATA CAPTURE 属性设置为 CHANGES 的表,请发出以下查询:

SELECT TABNAME, TABSCHEMA FROM SYSCAT.TABLES
  WHERE TYPE IN ('T','S','L') 
    AND DATACAPTURE <> 'N'

要查找将 DATA CAPTURE 属性设置为 NONE 的表,请发出以下查询:

SELECT TABNAME, TABSCHEMA FROM SYSCAT.TABLES
  WHERE TYPE IN ('T','S','L')
    AND DATACAPTURE = 'N'

sqlcode:+20534

sqlstate:01696

SQL20535N 由于以隐式或显式方式指定了涉及 时间段名称 的时间段规范,因此目标对象 对象名 不支持数据更改操作 操作。原因码:原因码

说明

由于数据更改操作的目标引用了时间表,并且已指定时间段规范,因此不支持此操作。此时间段规范是通过专用寄存器以隐式方式指定的,或者是以显式方式在指定为目标的全查询中指定的。指示的原因码提供了更多信息:

1

CURRENT TEMPORAL SYSTEM_TIME 专用寄存器包含非 Null 值,并且数据更改操作的目标是系统时间段时间表(直接或间接)。在时间段规范生效期间,不能更改系统时间段时间表中的数据。数据更改语句的目标是下列其中一项:

  • 系统时间段时间表
  • 一个在指定了外全查询的情况下定义的视图,此查询在 FROM 子句中直接或间接地引用了系统时间段时间表,并且没有为数据更改操作定义 INSTEAD OF 触发器
  • 一个在 FROM 子句中直接或间接地引用了系统时间段时间表的全查询
2

CURRENT TEMPORAL SYSTEM_TIME 专用寄存器包含非 Null 值,并且数据更改语句的目标是在指定了 WITH CHECK OPTION 的情况下定义的视图。由于视图定义包含的 WHERE 子句包含下列其中一个语法元素,因此无法处理此数据更改语句:

  • 一个直接或间接地引用了系统时间段时间表的子查询
  • 对具有相关联程序包的 SQL 例程进行的调用
  • 对具有除 NO SQL 以外的数据访问指示的外部例程进行的调用
3

数据更改语句的目标是作为全查询指定的,该全查询在 FROM 子句中引用了一个视图,并接着在 SYSTEM_TIME 中引用了时间段规范。所引用的视图是在指定了 WITH CHECK OPTION 的情况下定义的。由于视图定义包含的 WHERE 子句包含下列其中一个语法元素,因此无法处理此数据更改语句:

  • 一个直接或间接地引用了系统时间段时间表的子查询
  • 对具有相关联程序包的 SQL 例程进行的调用
  • 对具有除 NO SQL 以外的数据访问指示的外部例程进行的调用
4

CURRENT TEMPORAL BUSINESS_TIME 专用寄存器包含非 Null 值,并且数据更改语句的目标是在指定了 WITH CHECK OPTION 的情况下定义的视图。由于视图定义包含的 WHERE 子句包含下列其中一个语法元素,因此无法处理此数据更改语句:

  • 一个直接或间接地引用了应用程序时间段时间表的子查询
  • 对具有相关联程序包的 SQL 例程进行的调用
  • 对具有除 NO SQL 以外的数据访问指示的外部例程进行的调用
5

数据更改语句的目标是作为全查询指定的,该全查询在 FROM 子句中引用了一个视图,并接着在 BUSINESS_TIME 中引用了时间段规范。所引用的视图是在指定了 WITH CHECK OPTION 的情况下定义的。由于视图定义包含的 WHERE 子句包含下列其中一个语法元素,因此无法处理此数据更改语句:

  • 一个直接或间接地引用了应用程序时间段时间表的子查询
  • 对具有相关联程序包的 SQL 例程进行的调用
  • 对具有除 NO SQL 以外的数据访问指示的外部例程进行的调用

无法处理该语句。

用户响应

请根据原因码执行适当的操作:

1

将专用寄存器 CURRENT TEMPORAL SYSTEM_TIME 设置为 Null 值,然后重试数据更改操作。如果此语句包括在一个不应对 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器的设置敏感的应用程序包中,请使用 SYSTIMESENSITIVE NO 绑定此程序包。

2

将专用寄存器 CURRENT TEMPORAL SYSTEM_TIME 设置为 Null 值,然后重试数据更改操作。如果此语句包括在一个不应对 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器的设置敏感的应用程序包中,请使用 SYSTIMESENSITIVE NO 绑定此程序包。另一种可能的备用方法是,如果不必进行相关联的数据更改检查,请将视图引用替换为另一个在未指定 WITH CHECK OPTION 的情况下定义的视图。

3

除去数据更改操作的目标全查询中的时间段规范。另一种可能的备用方法是,如果不必进行相关联的数据更改检查,请将视图引用替换为另一个在未指定 WITH CHECK OPTION 的情况下定义的视图。

4

将专用寄存器 CURRENT TEMPORAL BUSINESS_TIME 设置为 Null 值,然后重试数据更改操作。如果此语句包括在一个不应对 CURRENT TEMPORAL BUSINESS_TIME 专用寄存器的设置敏感的应用程序包中,请使用 BUSTIMESENSITIVE NO 绑定此程序包。

5

除去数据更改操作的目标全查询中的时间段规范,并在此全查询的 WHERE 子句中使用显式谓词来指定数据更改操作的目标行。

sqlcode:-20535

sqlstate:51046

SQL20536N 无法处理此操作,因为它涉及到文本索引。原因码:原因码

说明

此操作直接将文本索引作为目标,或者具有依赖于此操作的结果的文本索引。由于存在文本索引而无法处理此操作。原因码指出了具体原因。

1

此操作请求删除的表存在文本索引。

2

RUNSTATS 命令的目标是文本索引。

3

REORG 命令的目标是文本索引。

4

此操作请求删除的昵称存在文本索引。

用户响应

1

如果必须删除此表,那么首先删除此表的文本索引。

2

从 RUNSTATS 命令中除去对于文本索引的引用。无法对文本索引收集统计信息。

3

从 REORG 命令中除去对于文本索引的引用。无法重组文本索引。

4

如果必须删除昵称,那么首先删除昵称的文本索引。

SQL20537W 预编译器检测到同一 SQL 语句中存在一组带有不同基数的数组。已编译应用程序以在适用语句中使用最低基数填充所有数组:最低基数

说明

COMPATIBILITY_MODE ORA 预编译器选项允许在嵌入式 SQL 语句中使用主变量数组、指示符数组或结构数组。如果在同一 SQL 语句中使用声明时带有不同基数的多个数组,那么预编译所有数组时使用相同基数。

如果指定了 COMPATIBILITY_MODE ORA 预编译选项并且 SQL 语句中具有声明时带有不同基数的数组,那么会返回此警告消息。已成功编译该语句,但所有数组在预编译时使用相同基数。

用户响应

为避免预编译过程中出现此警告,请对同一 SQL 语句中使用的所有数组使用相同基数。

sqlcode:+20537

sqlstate:01697

SQL20538W 更改了名为 表名 的表的许可权或掩码。此更改可能要求更改基于此表的具体化查询表 (MQT) 的许可权或掩码,以维护数据的安全性。

说明

创建、改变或者删除了表 表名 的许可权或掩码。至少有一个基于此表的 MQT 使用掩码或许可权进行访问控制,而不是使用缺省许可权。MQT 包括基本表 表名 中的数据。为了维护数据安全性,必须在此 MQT 的许可权和掩码中反映对此 MQT 的基本表所作的访问控制更改。

用户响应

请验证每个基于 表名 表的 MQT 的许可权和掩码是否与基本表 表名 的访问控制一致。

sqlcode:+20538

sqlstate:01698

SQL20539N 查询失败,因为在子句关键字中使用了负值或空值。

说明

查询可以包含 FETCH FIRST 子句或 LIMIT 子句以控制从查询返回的行数。查询还可以包含 OFFSET 子句,以从指定的行号开始访存行。可以将这些子句的行计数值指定为表达式,将在打开查询时对该表达式求值,并且该表达式必须得出查询的正数字常数值。

为指示的子句指定的表达式返回了负值或空值。

用户响应

更改该表达式,以便它返回正数,然后重新发出此查询。

sqlcode:-20539

sqlstate:2201W 和 2201X

SQL20540N 正在执行过程的自主事务已异常终止。例程名称:例程名称。特定名称:特定名称。原因码:原因码

说明

可以将过程定义为 AUTONOMOUS,以使其执行发生在单独的自主事务中。执行该过程时可能遇到了错误,该错误要求终止该过程并回滚自主事务而不回滚父事务或进行调用的事务。当自主过程由于错误(通常会导致回滚事务)而终止时,将返回此消息。在这种情况下,将回滚自主过程的自主事务,但不会影响进行调用的事务。此消息的可能原因码是终止了自主过程的 SQLCODE。

用户响应

检查与原因码中的 SQLCODE 相关联的消息,并使用其中的信息来确定自主过程终止的原因。解决自主过程或进行调用的应用程序中的任何问题,然后再次运行该过程。

sqlcode:-20540

sqlstate:560D2

SQL20541N 接收到来自数据库内分析提供程序的错误代码。错误代码:错误代码。提供程序名称:提供程序名称。相关联的文本和标记:标记

说明

您可以使用嵌入式分析提供程序来执行数据库内分析。

在引用数据库内分析提供程序时,从指定的提供程序接收到意外的错误代码。

用户响应

作为对此错误的响应,执行以下故障诊断步骤:

  • 确保该提供程序的进程可用。
  • 通过找到该提供程序中所指定错误的相应消息正文和更正操作,找出此问题的根本原因并进行更正。
  • 请检查提供程序所生成的任何相应诊断日志。

sqlcode:-20541

sqlstate:560D4

SQL20542N 未执行该语句,因为与该数据库服务器的连接已断开,并且自动化客户机重新路由 (ACR) 功能部件未能成功重新执行该语句。

说明

当与数据库服务器断开连接时,ACR 功能部件尝试重新连接至数据库。当成功重新连接之后,ACR 功能部件无法无缝地重新执行该语句时,将返回此消息。

返回此消息时,数据库连接处于打开状态。

用户响应

再次执行此语句。

如果错误仍存在,请执行下列故障诊断步骤:

  1. 从客户机和服务器上的诊断日志中收集信息。
  2. 调查与数据库服务器的连接断开的原因。

sqlcode:-20542

sqlstate:54068

SQL20544N 由于处理 ANALYZE_TABLE 表达式时遇到错误,因此语句失败。分析提供程序名称:提供程序名称。原因码:原因码

说明

可使用 ANALYZE_TABLE 表达式从提供程序中调用分析例程。该例程根据输入表执行分析处理并返回一组行作为输出。必须在实现字符串中指定有关例程实现的详细信息,例如有关分析提供程序、要使用的例程的名称以及例程源所在的表的信息。IMPLEMENTATION 参数将实现字符串传递至 ANALYZE_TABLE 表达式。

对于 ANALYZE_TABLE 表达式,如果找不到或无法装入指定的例程,那么会返回此消息。通常,在例程源表或例程源存在问题时,将返回此消息。原因码更具体地指示了问题根源:

1

实现字符串的格式或内容无效。它必须以 PROVIDER=xxx 开头,其中 xxx 标识受支持的提供程序。它必须后跟指定提供程序的“名称=值”对,每对以分号结尾。

2

指定的例程源表未包含针对提供程序正确定义的最少必需列。如果指定了 PROVIDER=SAS,那么至少有 4 个必需列:

  • “MODELNAME”
  • “MODELDS2”
  • “MODELFORMATS”
  • “MODELMETADATA”
3

指定的例程源表并非基本表。例程源表的名称不能标识全局临时表、视图、公共表表达式或昵称。

4

一个列集的组合总长度在指定例程源表的一行中太长。如果指定了 PROVIDER=SAS,那么该集中的列名为“MODELDS2”、“MODELFORMATS” 和“MODELMETADATA”。

5

在指定例程源表的一行或多行中,一列或多列的内容为空但不为 NULL。如果指定了 PROVIDER=SAS,那么它可以是名为“MODELDS2”的列。

6

在指定的例程源表中找不到指定的例程源名称。

7

例程源表未包括必需的主键约束。如果指定了 PROVIDER=SAS,那么必须将 MODELNAME 列定义为主键。

8

指定的提供程序不受支持。

用户响应

根据原因码对此消息作出响应:

1

指定格式正确并带有指定的提供程序所需内容的实现字符串。

2

修改例程源表的定义,以使该表包含必需的列。

3

更正实现字符串以指定用于标识基本表的例程源表名称。

4

修改例程源表的定义,以使列集的组合总长度不会超出例程源表中允许的最大长度。

5

查看在例程源表的所有行中不能包含空字符串值的列的内容。如果指定了 PROVIDER=SAS,请在名为“MODELDS2”的列中更正所有包含空(零长度)字符串的行。

6

更正实现字符串以指定有效例程源表和例程源名称。

7

修改例程源表以包括必需的主键约束。

8

在实现字符串中指定受支持的提供程序。

sqlcode:-20544

sqlstate:5507A

SQL20545N 由于未能建立或维护与数据库内分析提供程序的连接,因此语句失败。分析提供程序名称:提供程序名称。原因码:原因码

说明

您可以使用嵌入式分析提供程序来执行数据库内分析。要使用嵌入式提供程序来成功执行分析,数据库管理器必须建立并维护与该提供程序的连接。

如果数据库管理器在尝试与嵌入式提供程序进行通信时遇到错误,那么将返回此消息。原因码指示了问题根源:

1

嵌入式提供程序进程未处于已启动并运行状态。

2

尝试连接到嵌入式提供程序时发生超时。

3

数据库管理器无法从 FMP 内存集中分配足够的共享内存,因此无法与嵌入式提供程序进行通信。

用户响应

通常,请通过执行下列操作对此消息作出响应:

  1. 从 db2diag 日志文件中收集诊断信息。
  2. 对嵌入式分析提供程序的安装和配置进行故障诊断。

更具体而言,当提供程序名称是“SAS”时,请根据原因码对此消息作出响应:

1

根据 DB2_SAS_SETTINGS 注册表变量的 ENABLE_SAS_EP 参数的值对原因码 1 作出响应:

  • 如果 ENABLE_SAS_EP 设置为 TRUE,请等待实例自动重新启动嵌入式进程。如果此进程未在大概 10 秒后重新启动,请收集下列诊断信息并对嵌入式分析提供进行故障诊断:
    • DB2_SAS_SETTINGS 注册表变量的各个参数的值。
    • db2diag 诊断日志文件中的相关信息。
  • 如果未设置 ENABLE_SAS_EP 或者 ENABLE_SAS_EP 设置为 FALSE,请通过运行 db2ida 命令以手动方式启动嵌入式进程。
2

通过执行下列步骤对原因码 2 作出响应:

  1. 等待嵌入式进程重新启动。
  2. 重新运行查询。
  3. 如果同一错误再次发生,请收集下列诊断信息并对嵌入式分析提供进行故障诊断:
    • DB2_SAS_SETTINGS 注册表变量的各个参数的值。
    • db2diag 诊断日志文件中的相关信息。
3

通过执行下列其中一项操作,对原因码 3 作出响应:

  • 等待某些查询完成处理,然后重新运行失败的查询。
  • 通过增大 DB2_FMP_COMM_HEAPSZ 注册表变量,增加 FMP 内存集中的内存量。

sqlcode:-20545

sqlstate:57065

SQL20546N 无法处理该语句,因为它违反了使用 ANALYZE_TABLE 表达式的限制中的一个。

说明

可使用 ANALYZE_TABLE 表达式从提供程序中调用分析例程。该例程根据输入表执行分析处理并返回一组行作为输出。必须在实现字符串中指定有关例程实现的详细信息,例如有关分析提供程序、要使用的例程的名称以及例程源所在的表的信息。IMPLEMENTATION 参数将实现字符串传递至 ANALYZE_TABLE 表达式。

当尝试运行的语句采用不受支持的方式来使用 ANALYZE_TABLE 表达式时,会返回此消息。

用户响应

重新编写应用程序,以便不违反 ANALYZE_TABLE 表达式的任何限制。

sqlcode:-20546

sqlstate:429CA

SQL20547N 该语句失败,因为赋值的目标是只读变量。变量名:变量名

说明

全局变量通常可用作各种具有适当写访问权的 SQL 语句中的赋值目标。但是,某些全局变量的定义使得它们成为只读全局变量。这适用于某些内置全局变量,也适用于使用 CONSTANT 子句来定义的用户定义变量。

不能在 SQL 语句中将只读变量用作赋值目标。

用户响应

请更改目标变量的名称以避免其引用只读变量。

sqlcode:-20547

sqlstate:428I3

SQL20548N 该语句失败,因为 ANALYZE_TABLE 表达式的输入表列具有不受支持的数据类型。不受支持的类型:类型名

说明

可使用 ANALYZE_TABLE 表达式从提供程序中调用分析例程。该例程根据输入表执行分析处理并返回一组行作为输出。必须在实现字符串中指定有关例程实现的详细信息,例如有关分析提供程序、要使用的例程的名称以及例程源所在的表的信息。IMPLEMENTATION 参数将实现字符串传递至 ANALYZE_TABLE 表达式。

可使用表名、视图名或在查询开头指定的公共表表达式名来指定 ANALYZE_TABLE 表达式的输入表。当指定的输入表的某一列具有不受支持的类型时,会返回此消息。

用户响应

通过下列其中一种方式对此错误作出响应:

  • 更改输入表以移除其数据类型不受支持的列或将该列强制转换为有效数据类型。
  • 如果使用表名或视图名指定输入表,那么可移除列或强制转换为另一数据类型(通过在查询开头指定公共表表达式并将公共表表达式名用作 ANALYZE_TABLE 表达式的输入表)。

sqlcode:-20548

sqlstate:428H2

SQL20549N 无法预编译该语句,这是因为指示符变量数组所包含的元素少于其对应的主变量数组。指示符变量数组名:var_name1。必需的数组大小:cardinality_of_array2

说明

指示符变量包含小整数值,该值指示关于相关联的主变量的某些信息。例如,您可以使用指示符变量来指示相关联的主变量包含空值。在嵌入式 SQL 应用程序中,当数组类型的参数传递到 CALL 语句时,可以将关于那些数组的内容的信息存储在对应的指示符变量数组中。当对数组参数指定了指示符变量数组时,指示符变量数组的大小必须大于或等于对应的主变量数组的大小。

用户响应

  1. 修改嵌入式 SQL 应用程序以将所有指示符变量数组声明为大小与相关联的主变量数组大小相同或更大。
  2. 重新编译嵌入式 SQL 应用程序,然后重新运行该应用程序。

SQL20551N 构造关联数组失败,因为输入数据至少包括一个重复的数组下标值。重复的下标值:

说明

在关联数组中,每个元素都与唯一下标值相关联。在使用 ARRAY_AGG 聚集函数构造数组时,如果多个元素与相同的数组下标值相关联,那么只能将其中一个元素值包括在数组中。这样做可能会造成元素数据丢失,这是下标值在用来构造关联数组的输入数据中必须唯一的原因。

用户响应

请更改输入数据以免数组下标值重复。在使用 ARRAY_AGG 聚集函数时,这可能需要将谓词添加至查询来产生聚集分组集合,以确保任何行都不包括数组下标表达式自变量 ARRAY_AGG 的重复值。

sqlcode:-20551

sqlstate:22545

SQL20552N 强制类型转换或赋值失败,因为值不符合用户定义的类型的数据类型约束。用户定义的类型:类型名称。值:

说明

用户定义的单值类型可以包括 NOT NULL 约束及 CHECK 约束,用以限制该数据类型的有效值。如果将值的类型强制转换为用户定义的类型,或者将值赋给使用该用户定义的类型来定义的变量、参数或列,那么可能会违反这些数据类型约束。此外,也可能使用变量、参数或列的缺省值进行隐式赋值。

用户响应

通过执行如下所列的操作,确保要赋的值或要进行强制类型转换的值,对于用户定义的类型的数据类型约束有效:

  • 更改值以符合数据类型约束。
  • 将数据类型更改为不同的数据类型。对用户定义的类型执行显式强制类型转换时,这可能极适用。
  • 如果值无效是因为使用了缺省值,请更改变量、参数或列的定义以使用对于用户定义的类型有效的缺省值。
  • 更改用户定义的类型的定义:通过删除用户定义的类型并使用不同的数据类型约束(将允许使用该值)来创建类型。

sqlcode:-20552

sqlstate:23528

SQL20556N 操作失败,这是因为无法从标量函数 function-name 返回多个结果值。

说明

调用了带有自变量的标量函数,但这些自变量不允许单次调用返回多个结果值。该标量函数的处理确定了由多个值组成的结果。

用户响应

可以使用以下其中一个选项来避免该错误:

  • 更改该标量函数的输入自变量的值,以返回多值结果中的单个值。
  • 如果有可能,请创建用户定义的表函数来作为标量函数调用的替代方法,以返回多值结果。

sqlcode:-20556

sqlstate:22547

SQL20557N 语句失败,因为 Hive MetaStore 中发生了错误。日志条目标识:日志条目标识。原因码:原因码

说明

在 IBM Big SQL 中,您可以使用标准 DDL 和 SQL 来创建和查询其数据存储在 Hadoop 分布式文件系统 (HDFS) 中的表。DDL 和 SQL 由 Big SQL 以及 Hive MetaStore 中的处理引擎进行处理。

原因码指示问题的类型:

1

Hive MetaStore 在处理 DDL 或 SQL 时遇到了错误。

2

Hive MetaStore 中缺少数据,或者数据不正确。例如,可能缺少表属性,或者表属性包含无效值。

标记 日志条目标识 中的日志标识由以下三个部分组成:

  1. 一个三字母前缀,指示哪个日志文件包含诊断详细信息。
  2. 一个三位数字,指示日志文件所在的数据库分区。
  3. 一个标识,打印在日志文件中相关诊断详细信息的附近。

用户响应

  1. 通过使用 日志条目标识 运行时标记中的信息,找到相应日志文件中的诊断详细信息。
  2. 排除问题原因。
  3. 再次提交语句。

sqlcode:-20557

sqlstate:58039

SQL20558N 语句失败,因为正则表达式字符串无效。原因码:原因码。函数名:函数名。正则表达式字符串中的位置:位置。正则表达式字符串:字符串

说明

如果指定为正则表达式函数的自变量的正则表达式字符串是无效正则表达式,那么会返回此消息。“字符串中的位置”指示正则表达式中的错误之处。如果无法确定该位置,那么会返回值 0。原因码提供了有关该模式中的错误的其他信息。

1

正则表达式模式中存在语法错误。

2

模式中的反斜杠转义序列不可识别。

3

Unicode 属性名称不正确。

4

使用了不受支持的正则表达式功能。

5

正则表达式模式中的括号的嵌套方式不正确。

6

十进制数字过大。

7

{min,max} 区间存在错误。

8

{min,max} 区间中的最大值小于最小值。

9

对不存在的捕获组进行了反向引用。

10

后视模式匹配必须具有有界最大长度。

11

正则表达式不能有包含字符串的 Unicode 集。

12

八进制字符常量必须小于或等于 0377。

13

方括号表达式缺少右括号。

14

在字符范围 [x-y] 中,x 大于 y。

用户响应

使用位置和原因码来确定正则表达式函数的正则表达式自变量的错误之处。在指定有效正则表达式的情况下,再次调用该函数。

sqlcode:-20558

sqlstate:2201S

SQL20559W 分析操作已成功,但出现了警告。例程名称:例程名称。分析消息标识:消息标识。诊断详细信息:运行时详细信息

说明

您可以通过调用 IBM 数据库内分析例程来分析数据库中存储的数据:

  • 可以构建用于输入数据的分析模型。
  • 可以通过应用已生成的模型来执行分类、集群、回归和其他分析操作。
  • 可以管理分析元数据。

如果 IBM 数据库内分析例程已成功完成,但在运行时遇到了不太严重的错误或警告,那么会返回此消息。

运行时标记提供有关该问题的更多信息:

  • 运行时标记 例程名 标识例程。
  • 标记 消息标识 提供分析错误消息的唯一标识,此错误消息会详细说明该问题。
  • 根据问题的性质,标记 运行时详细信息 可能为空,也可能包含用于阐明问题根源的其他详细信息。

用户响应

  1. 通过阅读 消息标识 所标识消息的文本来了解该问题的详细信息。
  2. 必要时,执行操作来找出底层错误或警告的原因并采用相应的措施,然后再次调用该例程。

sqlcode:+20559

sqlstate:01H58

SQL20560N 例程未运行,因为所指定字符串自变量的格式或内容无效。例程名称:例程名称。原因码:原因码。子字符串:子字符串。分析消息标识:消息标识。诊断详细信息:运行时详细信息

说明

IBM 数据库内分析例程接受一个自变量:一个包含“参数/值”对列表的字符串,各个对之间用逗号进行分隔。当分析例程无法成功处理给定字符串自变量时,将返回此消息。

运行时标记提供有关该问题的更多信息:

  • 运行时标记 例程名 标识例程。
  • 字符串中问题的根源在运行时标记 子字符串 所显示的子字符串中或其附近。
  • 根据问题的性质,标记 消息标识 可能为空,也可能包含对问题进行了详细说明的分析错误消息的唯一标识。
  • 根据问题的性质,标记 运行时详细信息 可能为空,也可能包含用于阐明问题根源的其他详细信息。

运行时标记 原因码 更具体地指示了问题类型:

1

字符串自变量未采用期望的格式:用逗号分隔的 <parameter>=<value> 对。

2

指定了不受支持的参数。

3

多次指定了某个参数。

4

指定了互斥参数。

5

某对参数必须一起指定,但仅指定了其中一个参数。

10

对参数指定的值未采用期望的格式。

11

对参数指定了不受支持的值,只能对该参数指定特定的值列表中的某个值。

12

对参数指定了数据类型不正确的值。

13

对参数指定了超出范围的数字值。

14

指定了字符串值,但其长度超过了该参数值的最大允许长度。

15

指定了字符串值,但其中包含不受支持的控制字符,例如水平制表符、换行符或回车符。

16

对参数指定了空值。

20

在对 incolumn 参数指定的值中,多次指定了某一列。

21

在对 incolumn 参数指定的值中,对某一列指定的属性字符串未采用期望的格式。

22

在对 incolumn 参数指定的值中,对某一列指定了不受支持的属性。

23

在对 incolumn 参数指定的值中,对 weight 属性指定了数据类型不正确的值。

用户响应

在指定有效参数字符串的情况下,再次调用该例程。

sqlcode:-20560

sqlstate:22548

SQL20561N 无法执行分析操作,因为表有问题。例程名称:例程名称。表名:表名。分析消息标识:消息标识。诊断详细信息:运行时详细信息

说明

调用 IBM 数据库内分析例程时,请指定输入表,例如:

  • 包含将分析的数据的表
  • 列属性表
  • 指示应该应用于实例或类数据的加权的表
  • 包含样本数据的表,这些样本数据用来验证所生成的分析模型
  • 包含分析模型的元数据的表

当分析例程中指定的输入表存在问题时,将返回此消息。

运行时标记提供有关该问题的更多信息:

  • 运行时标记 例程名 标识例程。
  • 标记 表名 指示哪个表有问题。
  • 标记 消息标识 提供分析错误消息的唯一标识,此错误消息会详细说明该问题。
  • 根据问题的性质,标记 运行时详细信息 可能为空,也可能包含用于阐明问题根源的其他详细信息。

用户响应

  1. 通过阅读 消息标识 所标识消息的文本来了解该问题的详细信息。
  2. 更正该表。
  3. 再次调用该例程。

sqlcode:-20561

sqlstate:22549

SQL20562N 无法执行分析操作,因为指定的选项无效。例程名称:例程名称。分析消息标识:消息标识。诊断详细信息:运行时详细信息

说明

您可以通过调用 IBM 数据库内分析例程来分析数据库中存储的数据。要执行分析,必须指定用于控制分析行为的选项,例如以下示例:

  • 包含输入数据的输入表的名称
  • 与分析相关的属性的集合,这些属性将应用于输入表的列。
  • 有关要应用于数据点的加权的信息
  • 要用于对所生成分析模型的质量进行评分的指标

如果在 IBM 数据库内分析例程中指定了不受支持、不一致或无效的选项集合,那么会返回此消息。

运行时标记提供有关该问题的更多信息:

  • 运行时标记 例程名 标识例程。
  • 标记 消息标识 提供分析错误消息的唯一标识,此错误消息会详细说明该问题。
  • 根据问题的性质,标记 运行时详细信息 可能为空,也可能包含用于阐明问题根源的其他详细信息。

用户响应

  1. 通过阅读 消息标识 所标识消息的文本来了解该问题的详细信息。
  2. 在指定有效选项的情况下,再次调用该例程。

sqlcode:-20562

sqlstate:22550

SQL20563N 分析操作失败。例程名称:例程名称。分析消息标识:消息标识。诊断详细信息:运行时详细信息

说明

您可以通过调用 IBM 数据库内分析例程来分析数据库中存储的数据:

  • 可以构建用于输入数据的分析模型。
  • 可以通过应用已生成的模型来执行分类、集群、回归和其他分析操作。
  • 可以管理分析元数据。

当 IBM 数据库内分析例程因为运行时错误而失败时,将返回此消息。

运行时标记提供有关该问题的更多信息:

  • 运行时标记 例程名 标识例程。
  • 标记 消息标识 提供分析错误消息的唯一标识,此错误消息会详细说明该问题。
  • 根据问题的性质,标记 运行时详细信息 可能为空,也可能包含用于阐明问题根源的其他详细信息。

用户响应

  1. 通过阅读 消息标识 所标识消息的文本来了解该问题的详细信息。
  2. 解决该问题。
  3. 再次调用该例程。

sqlcode:-20563

sqlstate:560DA

SQL20564N 无法执行分析操作,因为授权标识 授权标识 不具有执行该操作的必需特权。操作:操作。分析消息标识:消息标识。诊断详细信息:运行时详细信息

说明

调用 IBM 数据库内分析例程需要适当特权。如果用户尝试调用例程(例如 LIST_PRIVILEGES 或 DROP_MODEL),而授权标识不具有调用该例程的必需特权,那么会返回此消息。

用户响应

以具有必需特权的授权标识来调用例程。

sqlcode:-20564

sqlstate:42526

SQL20566N 用来定义 例程名 的 CREATE FUNCTION 或 ALTER MODULE 语句失败,因为所标识的组件例程无效。组件例程子句:组件例程子句。特定名称:特定名称。原因码:原因码

说明

创建聚集接口函数操作时,子句 组件例程子句 的组件例程(使用特定名称 特定名称 进行标识)无效,以下原因码指定了原因:

1

所标识组件例程的一个或多个参数的数据类型不正确。

2

所标识组件例程的一个或多个参数的方式不正确。

3

所标识组件例程的返回值的数据类型不正确。

4

所标识组件例程的参数数目不正确。

5

所标识组件例程的一个或多个选项不正确。

用户响应

确定有关所标识组件例程的不正确内容,并根据以下 原因码 所指定的原因,更正该例程的定义或者对该组件例程指定另一个具有有效特征的例程。

1

确保所标识组件例程的所有参数的数据类型都正确。

2

确保所标识组件例程的所有参数的方式都正确。

3

确保所标识组件例程的返回值的数据类型正确。

4

确保所标识组件例程的参数数目正确。

5

确保所标识组件例程的所有选项都正确。

sqlcode:-20566

sqlstate:428IA

SQL20568W 已使用随机分发成功创建此表。但是,因为数据库管理器选择的分发键可能未保证唯一值,所以此表的数据分发可能欠佳。分发键中的列:列名列表

说明

如果所创建随机分发表带有多个唯一键或主键,那么数据库管理器会将所有唯一键和主键中的重叠列集用作分发键。如果分发键包含重复值,那么这可能导致一部分成员的数据出现偏差。

用户响应

数据库管理器选择的分发键为 列名列表。如果这些列的值包含重复值,那么表中数据可能存在偏差。为避免此问题,请重新创建该表并显式设置另一分发键。可使用 DISTRIBUTE BY HASH 子句显式设置此分发键。

sqlcode:+20568

sqlstate:0169C

SQL20569N 外部表操作失败,因为对应数据文件或诊断文件存在问题。文件名:文件名。原因码:原因码

说明

外部表的数据存储在可位于本地或远程的文件中。

如果某个语句尝试创建外部表、向外部表插入数据或查询外部表,但因为对应数据文件或日志/损坏文件存在问题而导致对应操作失败,那么会返回此消息。

原因码标识特定问题:

1

无法访问数据文件,或无法写入日志/损坏文件。

2

发出该语句的用户标识无权访问该数据文件。

3

处理该数据文件的尝试意外结束。该数据文件的内容可能已损坏。例如,数据字段中的数据可能包含分隔符或空值并且因此需要转义字符。

4

数据文件遇到操作系统级别大小限制、I/O 问题或内存不足问题。

用户响应

执行对应原因码的操作:

1

执行以下故障诊断步骤:

  • 验证是否正确指定了该数据文件。
  • 验证该数据文件是否存在于指定位置。
  • 对于远程数据文件,验证网络连接是否开启。
  • 对于日志/损坏文件,请验证文件系统是否有足够空间。
2

设置该数据文件的访问许可权,以使发出该语句的用户标识可读写该数据文件。

3

使用相应的转义字符更正其字段数据中包含分隔符或空值的数据文件。

4

确保针对数据文件的外部表操作被限制为遵循操作系统约束。

sqlcode:-20569

sqlstate:428IB

SQL20570N 该语句失败,因为被拒绝行数超出 MaxErrors 选项值中设置的限制。日志文件名:日志文件名

说明

外部表的数据存储在可位于本地或远程的文件中。

该文件中的数据可能未与外部表的列定义完全匹配。如果从外部表查询数据,那么数据库管理器可能需要改变或转换该数据,以允许 SELECT 语句返回结果集。但是,有时特定数据行中的数据无法成功改变或转换。如果发生此情况,那么该行被拒绝并且不会包含在结果集中。

可使用 MaxErrors 外部表选项以指定被拒绝行数的阈值。如果超出此阈值,那么处理 SELECT 语句的尝试被取消。

如果对外部表中的数据发出 SELECT 语句,并且处理该语句的尝试失败(因为被拒绝行数超过 MaxErrors 选项设置的阈值),那么会返回此消息。

用户响应

通过下列其中一种方式解决此错误:

  • 为减少被拒绝行数,请改变该文件中的数据以使它与外部表的列定义相匹配。
  • 为减少被拒绝行数,请改变外部表的列定义以使它们更好地与该文件中的数据相匹配。
  • 为允许处理该语句(尽管外部表的列定义与该文件中的数据之间不匹配),请增大 MaxErrors 选项的值。

sqlcode:-20570

sqlstate:22551