SQL20250 - SQL20499

SQL20250N 数据分区数超过了表的表空间数。

说明

定义分区表时指定了 NO CYCLE,并且没有为指定的表分区数定义足够的表空间。

无法处理该语句。

用户响应

在 CREATE TABLE 语句中,为该表指定更多表空间,或者对该表除去 NO CYCLE 规范。

sqlcode:-20250

sqlstate:428G1

SQL20251N 无法从表 表名 中拆离最后一个数据分区。

说明

ALTER TABLE 语句已导致剩余的最后一个数据分区与表拆离。不允许执行此操作。分区表必须至少有一个数据分区的状态是“正常”或者“已连接”。分区表不能只具有其状态为“已拆离”的数据分区。要确定分区的状态,可查询目录视图 SYSCAT.DATAPARTITIONS。

无法处理该语句。

用户响应

确保 ALTER TABLE 语句至少在表中保留了一个数据分区。

sqlcode:-20251

sqlstate:428G2

SQL20253N 不能创建、改变或执行 BEFORE 触发器或已生成列 名称,因为这样做会导致通过多个具有冲突删除规则的关系来删除其上定义了 BEFORE 触发器或已生成列的表与至少一个祖代表的连接。约束 约束名-1约束名-2 的删除规则之间存在冲突。原因码:原因码

说明

CREATE TRIGGER、CREATE TABLE 或 ALTER TABLE 语句中的 BEFORE 触发器或已生成列 名称 的定义无效,原因由 原因码 指定,如下所示:

  1. 执行约束 约束名-1 的删除规则将触发 BEFORE 触发器 名称,而此 BEFORE 触发器的主体修改了作为约束 约束名-2 的外键的一部分的列或修改了作为约束 约束名2 的外键的一部分的已生成列引用的列。
  2. 执行约束 约束名-1 的删除规则将触发已生成列 名称 的更新,而已生成列本身是约束 约束名-2 的外键的一部分。
  3. 添加了 BEFORE 触发器或已生成列 名称 之后,同时执行约束 约束名-1约束名-2 将导致更新同一列。

无法处理该语句。

用户响应

与原因码对应的操作是:

  1. 更改 BEFORE 触发器定义以使在执行约束 约束名-1 的删除规则时不会触发 BEFORE 触发器,或更改 BEFORE 触发器的主体以使它既不修改作为约束 约束名-2 的外键的一部分的列,也不修改作为约束 约束名-2 的外键的一部分的已生成列引用的列。
  2. 更改已生成列表达式以使在执行约束 约束名-1 的删除规则时不更新已生成列,或更改约束 约束名-2 的外键以使它不包括已生成列。
  3. 更改 BEFORE 触发器定义或已生成列表达式以使同时执行约束 约束名-1约束名-2 时不会导致更新同一列。

sqlcode:-20253

sqlstate:42915

SQL20254N 由于 FOREIGN KEY 名称 将导致表 表名 通过包含删除规则 RESTRICT 或 SET NULL 的循环删除连接至它本身,因此该 FOREIGN KEY 无效。原因码:原因码

说明

引用循环不能包含删除规则 RESTRICT 或 SET NULL。对 CREATE TABLE 或 ALTER TABLE 语句中的 FOREIGN KEY 名称 指定的删除规则无效,原因由 原因码指定,如下所示:
  1. 指定的删除规则是 RESTRICT 或 SET NULL,引用关系将导致表 表名 删除连接至它本身。
  2. 指定的删除规则是 CASCADE,但引用关系将导致表 表名 通过包含删除规则 RESTRICT 或 SET NULL 的循环删除连接至它本身。

名称 是 FOREIGN KEY 子句中的约束名(如果指定)。如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。

无法处理该语句。

用户响应

与原因码对应的操作是:
  1. 将删除规则更改为 CASCADE 或 NO ACTION,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。
  2. 将删除规则更改为 NO ACTION、RESTRICT 或 SET NULL,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

sqlcode:-20254

sqlstate:42915

SQL20255N 由于 FOREIGN KEY 名称 将导致派生表 派生表名 通过多个具有冲突删除规则的关系删除连接至它的祖先表 祖先表名,因此该 FOREIGN KEY 无效。派生表上的约束 约束名-1约束名-2 的删除规则之间存在冲突。原因码:原因码

说明

对 CREATE TABLE 或 ALTER TABLE 语句中的 FOREIGN KEY 名称 指定的引用约束定义无效。原因码更具体地指示了问题所在:

1

该关系是自引用,并且是使用删除规则 RESTRICT 或 SET NULL 指定的,而且该表是删除规则为 CASCADE 的关系中的从属项。

2

该关系是使用删除规则 CASCADE 指定的,并且该表中已存在删除规则为 RESTRICT 或 SET NULL 的自引用关系。

3

外键与现有关系的外键重叠,并且它们的删除规则不相同或其一是 SET NULL。

4

该关系是使用删除规则 CASCADE 指定的,这将导致派生表通过多个关系删除连接至它的祖先表,其中,至少两个这样的关系具有重叠的外键,并且它们的删除规则不相同或者其一是 SET NULL。

5

至少其中一个有冲突的引用约束是使用删除规则 SET NULL 指定的,并且它的外键定义与分区键或 MDC 表的某个维重叠。

6

该关系是使用删除规则 CASCADE 指定的,这将导致派生表通过多个关系删除连接至它的祖先表,其中,至少其中一个关系是使用删除规则 SET NULL 指定的,并且它的外键定义与分区键或 MDC 表的某个维重叠。

7

当考虑 BEFORE 触发器和已生成列时,新的引用约束定义与现有引用约束冲突。

8

当考虑 BEFORE 触发器和已生成列时,新的引用约束将导致另一对冲突的引用约束共存于删除连接图中。

名称 是 FOREIGN KEY 子句中的约束名(如果指定)。如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。同一约定适用于 约束名-1约束名-2

用户响应

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

1

将删除规则更改为 CASCADE 或 NO ACTION,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

2

将删除规则更改为 NO ACTION、RESTRICT 或 SET NULL,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

3

不要指定外键定义中的已包含在现有外键定义中的列,或者,如果现有引用约束的删除规则不是 SET NULL,那么将新约束的删除规则更改为相同。

4

将删除规则更改为 NO ACTION、RESTRICT 或 SET NULL,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

5

不要指定外键定义中的已包含在现有分区键定义中的列,或者,从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

6

将删除规则更改为 NO ACTION、RESTRICT 或 SET NULL,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

7

将删除规则更改为 NO ACTION 或移除引用约束触发的触发器,或者不要创建新的引用约束。

8

将删除规则更改为 NO ACTION、RESTRICT 或 SET NULL,或从 ALTER TABLE 语句中消除特定 FOREIGN KEY 子句。

sqlcode:-20255

sqlstate:42915

SQL20256N 由于 FOREIGN KEY 名称 将导致两个表 表名-1表名-2 在通过 CASCADE 关系删除连接至同一个祖先表 祖先表名 时删除彼此的连接,因此该 FOREIGN KEY 无效。原因码:原因码

说明

当两个表通过 CASCADE 关系删除连接至同一表,并且当每个路径中的最后一个关系的删除规则是 RESTRICT 或 SET NULL 时,两个表不能删除连接至对方。CREATE TABLE 或 ALTER TABLE 语句中的 FOREIGN KEY 子句中指定的删除规则无效,原因由 原因码 指定,如下所示:
  1. 该关系是使用删除规则 RESTRICT 或 SET NULL 指定的,这将导致两个表删除连接至对方。
  2. 该关系是使用删除规则 CASCADE 指定的,这将导致两个表删除连接至对方,其中,每个路径中的最后一个关系的删除规则是 RESTRICT 或 SET NULL。无法处理该语句。

用户响应

与原因码对应的操作是:
  1. 将删除规则更改为 CASCADE 或 NO ACTION,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。
  2. 将删除规则更改为 NO ACTION、RESTRICT 或 SET NULL,或从 CREATE TABLE 或 ALTER TABLE 语句中删除特定的 FOREIGN KEY 子句。

sqlcode:-20256

sqlstate:42915

SQL20257N 当全查询中的 SQL 数据更改语句的目标视图 视图名 定义了 INSTEAD OF 触发器时,FINAL TABLE 无效。

说明

全查询包括针对为 SQL 数据更改操作定义了 INSTEAD OF 触发器的视图的 INSERT 或 UPDATE 语句。不能返回 INSTEAD OF 触发器的 FINAL TABLE 结果。

无法处理该语句。

用户响应

将 FINAL TABLE 更改为 NEW TABLE,或者删除 INSTEAD OF 触发器。

sqlcode:-20257

sqlstate:428G3

SQL20258N 无效使用了 INPUT SEQUENCE 排序。

说明

ORDER BY 子句指定了 INPUT SEQUENCE,而全查询的 FROM 子句未指定 INSERT 语句。

无法处理该语句。

用户响应

当全查询的 FROM 子句指定 INSERT 语句时使用 INPUT SEQUENCE。

sqlcode:-20258

sqlstate:428G4

SQL20259N 不能从全查询的 FROM 子句中的数据更改语句的目标中选择列 列名

说明

已经选择了不能在此查询的选择列表中指定的列。此列基于视图或全查询中的这样一列:它是在 FROM 子句中使用 NEW TABLE 或 FINAL TABLE 指定的 INSERT 或 UPDATE 语句的目标。所选择的列基于:
  • 子查询
  • 读取或修改 SQL 数据的函数
  • 是决定性的或者具有外部操作的函数
  • OLAP 函数
  • 序列的下一个值。

无法处理该语句。

用户响应

更改选择列表以除去该列。

sqlcode:-20259

sqlstate:428G6

SQL20260N UPDATE 语句的赋值子句必须至少指定不是 INCLUDE 列的一列。

说明

UPDATE 语句指定了 INCLUDE 列,并且对 INCLUDE 列指定了唯一赋值。UPDATE 语句中至少有一个赋值必须是 UPDATE 语句的目标的一列。

无法处理该语句。

用户响应

更改该语句以便为 UPDATE 语句的目标的一列指定赋值。

sqlcode:-20260

sqlstate:428G5

SQL20261N 在 UNION ALL 视图 视图名 中对表 表名 进行了无效行移动。

说明

对表 表名 的检查约束导致已更新的行被拒绝。当尝试将该行插入 视图名 的另一个基础表中时,表 表名 接受了该行。已移动的行的目标表不能与它起源于的表完全相同。

无法处理该语句。

用户响应

验证目标表的更新前和插入前触发器之间的交互作用。当执行行移动时,DB2 首先执行更新前触发器,这可能会修改该行。然后,被拒绝的行可能会由插入前触发器进行处理,这可能又会以目标表的检查约束现在接受的一种方式来修改该行。

更改触发器,以便不会发生这种情况。

sqlcode:-20261

sqlstate:23524

SQL20262N 在视图 视图名 中无效使用了 WITH ROW MOVEMENT。原因码:原因码

说明

已经使用 WITH ROW MOVEMENT 子句定义了视图 视图名。由于下列原因之一,此子句不适合于该视图:

  1. 视图的最外层的全查询不是 UNION ALL。
  2. 视图中包含与最外层全查询不同的嵌套 UNION ALL 操作。
  3. 并非所有视图列都是可更新的。
  4. 视图中有两列是基于基本表的同一列的。
  5. 其中一个基础视图对它定义了 INSTEAD OF UPDATE 触发器。
  6. 视图中包含对系统时间段时间表或应用程序时间段时间表的引用。

不能创建视图。

用户响应

根据原因码,执行下列操作:

  1. 省略 WITH ROW MOVEMENT 子句。它不适用于没有 UNION ALL 的视图。
  2. 重写视图主体,以便 UNION ALL 只发生在最外层全查询上。
  3. 省略不可从视图定义中更新的列。
  4. 重写视图主体,以便仅在视图定义中引用一次基本表的每一列。
  5. 省略 WITH ROW MOVEMENT 子句,并对新定义的视图使用 INSTEAD OF UPDATE 触发器。
  6. 移除对系统时间段时间表或者应用程序时间表的任何引用。

sqlcode:-20262

sqlstate:429BJ

SQL20263N 尝试更新视图 视图名-1 无效,这是因为视图 视图名-2 是使用 WITH ROW MOVEMENT 定义的。

说明

尝试更新 视图名-1 失败,这是因为它直接或间接包含涉及到视图 视图名-2(该视图是使用 WITH ROW MOVEMENT 子句定义的)的 UNION ALL 操作。

无法执行该语句。

用户响应

删除视图 视图名-2,并且不使用 WITH ROW MOVEMENT 子句来重新创建该视图。

sqlcode:-20263

sqlstate:429BK

SQL20264N 对于表 表名 而言,授权标识 授权标识 对列 列名 不具有 访问类型 访问权。

说明

在访问名为 表名 的表时,授权标识 授权标识 尝试对列 列名 执行 访问类型 访问。该授权标识没有以该方式访问该列所必需的 LBAC 凭证。

如果正在创建生成列,那么用于读取此列的 LBAC 凭证需要将此列包含在生成表达式中。

用户响应

与具有 SECADM 权限的用户联系,请此用户将允许对 列名 列进行 访问类型 访问的 LBAC 凭证授予授权标识 授权标识

sqlcode:-20264

sqlstate:42512

SQL20267N 函数 函数名(特定 特定名称)将修改 SQL 数据,并在非法上下文中对其进行调用。原因码:原因码

说明

使用 MODIFIES SQL DATA 属性定义了具有特定名称 特定名称 的函数 函数名。只允许具有此属性的函数作为是 SET 语句中的子查询、SELECT INTO 语句或行全查询的 SELECT 语句、公共表表达式和 RETURN 语句的 SELECT 语句中的最后一个表引用。另外,在与表函数相同的 FROM 子句中,表函数的每个自变量必须与表引用相关。当自变量是表引用的一列时,自变量与该表引用相关。

原因码:

  1. 表函数后面有表引用。
  2. 在最外层的子查询中未引用表函数。
  3. 表函数前面是表引用,函数自变量未对其进行引用。
  4. 在视图定义的主体中使用了表函数。
  5. 在 XQuery 上下文内的全查询中使用了表函数。
  6. OUTER JOIN 运算符引用了表函数,或者(通过在连接表子句中使用圆括号)将表函数嵌套在其他显式连接中。
  7. 在过程定义的全局变量或参数的缺省子句中引用了此函数。

无法处理该语句。

用户响应

  1. 重写查询,以使表函数是 FROM 子句中的最后一个表引用。
  2. 将表函数移动到最外层的子查询中。
  3. 除去不与表函数相关的表引用,或者在表函数中包括与表引用相关的自变量。
  4. 从视图定义的主体中除去表函数。
  5. 从 XQuery 上下文中的全查询中除去表函数。
  6. 除去 OUTER JOIN 运算符,或者不将表函数放在嵌套的显式连接中。
  7. 从过程定义的全局变量或参数的缺省子句中除去此函数。

对于原因码 1、2 和 3,可以使用公共表表达式来重写查询以隔离表函数调用。例如:

SELECT c1 FROM
   (SELECT c1 FROM t1, t2,
     TABLE(tf1(t1.c1) AS tf), t3)
      AS x, t4

可以重写为:

WITH cte1 AS (SELECT c1 FROM t1,
   TABLE(tf1(t1.c1)) AS tf),
   x AS (SELECT c1 FROM t2, cte1, t3)
     SELECT c1 FROM x, t4;

sqlcode:-20267

sqlstate:429BL

SQL20268N 不能应用整理。原因码:原因码

说明

不能应用整理,原因码为 原因码。原因码及其含义为:
1
应用整理的结果大于 32,742 字节。
2
不能对函数 LOCATE、POSITION 和 POSSTR 应用整理。
3
不能对 LIKE 谓词或 %WLDCRD 函数应用整理。
4
不能对 FOR BIT DATA 字符串应用整理。

用户响应

对于每个原因码:
1
生成的整理键长于源字符串并依赖于所选整理。请减短源字符串的长度,或选择不同的整理。
2
请忽略该函数或指定非 UCA 整理。
3
请忽略该函数或指定非 UCA 整理。
4
不要使用 FOR BIT DATA 字符串。

sqlcode:-20268

sqlstate:429BM

SQL20269N 不能在强制引用约束中引用昵称 昵称

说明

CREATE TABLE 语句或 ALTER TABLE 语句中的引用约束无效。约束定义指定 ENFORCED,但是引用昵称。

无法处理该语句。

用户响应

更改引用约束以指定 NOT ENFORCED 或除去对昵称的引用。

sqlcode:-20269

sqlstate:428G7

SQL20271W 该语句中序数位置 数字 处名称为 名称 的名称已被截断。

说明

所描述的语句中至少一个名称已被截断。截断的第一个名称是由名称 名称 和序数位置 数字 标识的。如果执行已编译查询的描述输出,那么序数位置与该查询的选择列表列是相对的。如果执行 CALL 语句的描述输出,那么序数位置与 CALL 解析为的过程的 OUT 或 INOUT 参数是相对的。如果执行 CALL 语句的描述输入,那么序数位置与 CALL 解析为的过程的 IN 或 INOUT 参数是相对的。

列名、参数名、用户定义的类型名称或用户定义的类型模式名太长,或者在进行代码页转换之后变得太长。

请注意,在使用 SQLDA 结构时,列名、参数名、用户定义的类型名称和用户定义的类型模式名的长度存在限制。

用户响应

如果准确的名称或模式非常重要,请执行下列其中一项操作:
  1. 使用其代码页不会导致扩展时超过受支持的最大长度的客户机。
  2. 对于列名,请更改表、视图或昵称以使列名较短。
  3. 对于参数名,请更改过程以使参数名较短。
  4. 对于用户定义的类型名称或用户定义的类型模式名,请删除并重新创建一个具有较短名称的用户定义类型。
  5. 对于模式名,请更改表、视图、过程或用户定义的类型。

sqlcode:+20271

sqlstate:01665

SQL20273N 由于未启用数据库进行联合,因此不能更新昵称统计信息。

说明

在实例级别检测到错误。由于未对实例启用联合,因此请求的操作不能完成。

用户响应

将 DBM 变量 FEDERATED 设置为 YES,然后重新启动数据库管理器。

sqlcode:-20273

sqlstate:55056

SQL20274W 不能更新某些昵称统计信息。

说明

数据库管理器无法针对昵称执行查询以收集统计信息,或者数据库管理器无法将更新结果写入到联合数据库系统目录。

用户响应

如果指定了日志文件路径,那么昵称统计信息更新错误列示在日志文件中。

sqlcode:+20274

sqlstate:550C8

SQL20275N XML 名称 xml-名称 无效。原因码:原因码

说明

因为该语句违反下列原因码所指示的约束,所以不能对其进行处理:
  1. xmlns 被用作属性名称或者元素名称或属性名称的前缀。
  2. 未在限定名的作用域中声明限定名的名称空间前缀。
  3. 元素或属性的名称不是 XML QName。
  4. XML 处理指令的名称不是 XML NCName。
  5. XML 处理指令的名称不能包含 "xml"(大小写任意组合)。
  6. XMLTABLE、XMLQUERY 或 XMLEXISTS 表达式的自变量名不是 XML NCName。

用户响应

更正 XML 名称并重新提交该语句。

sqlcode:-20275

sqlstate:42634

SQL20276N XML 名称空间前缀 xml-名称空间前缀 无效。原因码:原因码

说明

因为该语句违反下列原因码所指示的约束,所以不能对其进行处理:
  1. 名称空间前缀不是 XML NCName。
  2. 不能将 xml 或 xmlns 重新声明为名称空间前缀。
  3. 声明了重复的名称空间前缀。

用户响应

更正 XML 名称空间前缀并重新提交该语句。

sqlcode:-20276

sqlstate:42635

SQL20277W 在执行从代码页 源代码页 到代码页 目标代码页 的转换时,字符被截断了。目标区域的最大大小为 最大长度。源字符串的长度为 源长度,且它的十六进制表示为 字符串

说明

在执行 SQL 语句期间,代码页转换操作产生的字符串比目标对象的最大大小还长。字符被截断了,这样结果将适合目标区域。

用户响应

如果截断导致了意外结果,那么扩大目标列的长度并再次发出该语句。

sqlcode:+20277

sqlstate:01004

SQL20278W 可能不能使用视图 视图名 来优化查询的处理。

说明

视图的全查询包括这样一些元素:当在查询中未直接引用视图时,这些元素禁止使用有关该视图的统计信息来进行优化。全查询的这些元素可能包括:
  • 聚集函数
  • 单值操作
  • 集合操作(union、except 或 intersect)。

成功地改变了视图以启用查询优化。

用户响应

不需要执行任何操作。如果视图的目的是优化不直接引用视图的查询,那么可以删除视图或者禁用查询优化。还可以考虑定义视图的全查询以除去阻止进行优化的元素。

sqlcode:+20278

sqlstate:01667

SQL20279N 不能启用视图 视图名 以进行查询优化。原因码:原因码

说明

视图不能允许 ENABLE QUERY OPTIMIZATION 选项,这是因为全查询不符合可以利用此功能的查询集。因为下列原因之一使得语句失败:
  1. 视图直接或间接引用现有具体查询。
  2. 视图是类型视图。
  3. 视图使用外部操作引用函数。

无法处理该语句。

用户响应

操作视原因码而定,如下所示:
  1. 除去对具体化查询表的引用。
  2. 无法指定有关类型视图的统计信息。可能可以定义不是类型视图的类似视图来启用使用统计信息进行优化。
  3. 从视图查询中除去使用外部操作对任何函数的引用。

sqlcode:-20279

sqlstate:428G8

SQL20280W 许可权不足,无法创建或写入 日志文件路径 文件。

说明

成功地完成了该语句,但是用户没有许可权来写入指定的日志文件 日志文件路径

用户响应

要将详细信息写入日志文件,应确保您对指定的日志文件路径具有写访问权。另外,省略可选的日志文件路径。

sqlcode:-20280

sqlcode:42501

SQL20282N .NET 过程或用户定义的函数 名称(特定名称 特定名称)未能装入 .NET 类 。原因码为 原因码

说明

不能装入由 CREATE PROCEDURE 或 CREATE FUNCTION 语句的 EXTERNAL NAME 子句给定的 .NET 类。原因码为:
  1. 找不到 .NET 例程的组合件。
  2. 在指定的组合件中找不到类。
  3. 在指定的类中找不到其类型与数据库目录中指定的类型相匹配的方法。

用户响应

  1. 确保给定了正确的汇编文件(包括任何文件扩展名)。如果未指定完完整路径,那么确保系统 PATH 中只存在组合件的一个实例,因为将装入在该 PATH 中找到的组合件的第一个实例。
  2. 确保如响应 1 中所描述的那样正确指定了组合件。确保正确指定了区分大小写的类名并确保它存在于指定的组合件中。
  3. 确保如响应 2 中所描述的那样正确指定了类。确保正确指定了区分大小写的方法名,并确保它作为 "public static void" 方法存在于指定的类中。

sqlcode:-20282

sqlstate:42724

SQL20284N 不能为联合数据源 服务器名称 创建方案。原因 = 原因码

说明

当构建联合查询存取方案时,由于丢失了谓词或者由下列原因码指示的查询语法方面的问题而不能处理一个或多个数据源的查询分段:
  1. 丢失了必需的谓词。
  2. 使用 OR 运算符或 BETWEEN 谓词将可以由数据源处理的谓词与另一个谓词进行组合。

用户响应

请参阅此数据源的联合文档。根据需要更正查询语法并重新提交该语句。与原因码对应的操作是:
  1. 提供丢失的谓词。
  2. 更改语句语法,以便使用 AND 运算符而不是 OR 运算符来将一个数据源的谓词与另一个数据源的谓词分开。

sqlcode:-20284

sqlcode:429BO

SQL20285N 未处理该语句或命令,因为名为 表名 的表具有已拆离的从属表,或者针对该表的异步分区拆离操作未完成。原因码:原因码

说明

可以通过使用数据分区来管理数据的范围。拆离数据分区的过程包含两个阶段:

  1. ALTER TABLE...DETACH PARTITION 操作以逻辑方式将数据分区从分区表拆离。
  2. 异步分区拆离任务将以逻辑方式拆离的分区转换成独立表。

与已拆离数据分区相关的、需要以增量方式维护的表称为已拆离的从属表。

运行时标记 原因码 的值指出了返回此消息的具体原因:

1

此表是拆离操作的目标表并且具有已拆离的从属项,这些从属项必须根据此表的当前内容以递增方式进行维护以保持完整性。由于使用此语句或命令将导致无法以递增方式维护已拆离的从属项,因此不允许使用此语句或命令。

2

此表是拆离操作的目标表,并且由于异步分区拆离任务尚未完成而不可用。

3

此表是拆离操作的源表,并且具有以逻辑方式拆离的分区。由于异步分区拆离任务尚未完成,因此不允许使用此语句或命令。

4

该表具有已拆离的分区并且具有从属表,对于这些已拆离的分区,需要以增量方式维护这些从属表。由于执行该语句或命令将使从属表的增量方式维护失效,因此不允许使用该语句。

用户响应

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

1

采用下列两种方式之一对原因码 1 作出响应:

  • 维护已拆离的从属表,然后通过执行下列步骤来重新发出该语句或命令:
    1. 通过查询 SYSCAT.TABDETACHEDDEP 目录视图来标识表的已拆离的从属项。
    2. 通过发出带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句对已拆离的从属表执行完整性处理。
    3. 重新发出此语句或命令。
  • 通过执行下列步骤来发出该语句或命令,而不维护已拆离的从属表:
    1. 通过对该表发出带有 FULL ACCESS 选项的 SET INTEGRITY 语句来重置该表的拆离属性。
    2. 重新发出此语句或命令。
    3. 对剩余的已拆离从属表的后续 SET INTEGRITY 语句执行完整性处理。
2

通过使用 LIST UTILITIES 命令来监视异步分区拆离任务的进度,并等待异步分区拆离任务完成。然后,重新发出该语句或命令。

3

请执行以下步骤:

  1. 通过使用 LIST UTILITIES 命令来监视异步分区拆离任务的进度,并等待异步分区拆离任务完成。
  2. 通过使用 SYSCAT.DATAPARTITIONS 目录视图来验证该表是否没有任何以逻辑方式拆离的分区
  3. 重新发出此语句或命令。
4

请执行以下步骤:

  1. 标识需要增量维护的从属表。
  2. 通过对从属表发出带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句,来对这些从属表执行完整性处理。
  3. 重新发出此语句或命令。

sqlcode:-20285

sqlstate:55057

SQL20287W 指定的高速缓存的语句的环境与当前环境不同。将使用当前环境来重新优化指定的 SQL 语句。

说明

已调用说明工具来说明先前已使用 REOPT ONCE 重新优化了的语句,但是当前环境与最初编译高速缓存的语句的环境不同。将使用当前环境来重新优化指定的语句。

将处理该语句。

用户响应

为了确保该方案与高速缓存中的方案相匹配,在与重新优化并高速缓存了原始语句的环境相匹配的环境中重新发出 EXPLAIN。

sqlcode:-20287

sqlstate:01671

SQL20288N 未能更新对象的统计信息。对象名:对象名。对象类型:对象类型。原因码:原因码

说明

可以使用 RUNSTATS 实用程序来收集和更新有关表、索引和统计信息视图的统计信息,以便给优化器提供用于选择存取方案的精确信息。

未能收集统计信息时,将返回此消息。原因码指示了故障的原因:

1

目标对象不支持收集统计信息。

2

尝试收集视图的统计信息,但是指定了视图不支持的 RUNSTATS 选项。例如,不能对视图指定 FOR INDEXES 选项。

3

不支持更新目标对象类型的某些统计信息。例如,数据页面统计信息不适用于 XML 路径索引。

用户响应

根据原因码对此错误作出响应:

1

验证指定的对象是否支持收集和更新统计信息。例如,为了能够收集和更新视图的统计信息,请在指定 ENABLE QUERY OPTIMIZATION 子句的情况下执行 ALTER VIEW 语句。

3

除去视图不支持的 RUNSTATS 选项。

3

验证是否可以更新目标对象类型的统计信息。

sqlcode:-20288

sqlstate:428DY

SQL20289N 为函数 函数名 指定了无效的字符串单位 单位

说明

该语句使用一个对于为内置函数提供的数据类型无效的字符串单位调用了该函数。这可能是由于下列原因而发生的:

  1. 使用 LENGTH 函数的显式字符串长度单位 单位 指定了非字符串数据。然而,不应为非字符串数据指定字符串单位。
  2. 使用 OCTETS 以外的字符串单位指定了位数据或二进制数据。然而,对于位数据或二进制字符串数据,CODEUNITS16 或 CODEUNITS32 是无效的。
  3. 对图形数据使用了 OCTETS,并且 start 参数不是奇数或 length 参数不是偶数。
  4. 对图形数据使用了 OCTETS,并且 start 参数不是奇数。
  5. 对图形数据使用了 OCTETS,并且 code-units 参数不是偶数。
  6. 已将 OCTETS 或 CODEUNITS16 与定义为 CODEUNITS32 的源字符串自变量配合使用。

无法执行该语句。

用户响应

更改函数的调用以除去无效字符串长度单位,或者将该长度单位更改为对于正在处理的数据类型和值有效的单位。

sqlcode:-20289

sqlstate:428GC

SQL20290N SQL 语句引用不能在分区 分区号 上运行的例程 例程名(特定名称 特定名称)。

说明

使用了无效的分区号 分区号 调用例程 例程名(特定名称 特定名称)。

用户响应

对分区号参数指定 -1 以在当前分区上运行例程。

sqlcode:-20290

sqlstate:560CA

SQL20296N 不允许使用 ALTER TABLE 语句,因为它将修改表 表名 的一些物理属性,该表具有已拆离的分区并且具有从属表,对于这些已拆离的分区,需要以增量方式维护这些从属表。

说明

该表具有已拆离的分区并且具有从属表,对于这些已拆离的分区,需要以增量方式维护这些从属表。不允许修改该表的任何物理属性,因为这样做将无法对从属表进行增量维护。 可以对物理属性进行的有限修改包括:添加列、改变列或者改变下列值: 数据捕获、值压缩、追加、压缩、已记录、最初未记录的激活。

用户响应

找出需要增量维护的从属表,并在对这些从属表发出带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句之后再重新发出先前已失败的 ALTER TABLE 语句。

可以使用以下查询来找出需要增量维护的从属表,其中 <schema name> 是 表名 的限定词,而 <table name> 是 表名 的表名部分。
WITH
DEP_CNT(TOTAL_DEP) AS (SELECT COUNT(*)
FROM SYSCAT.TABDEP),
DEP_TAB(SCHEMA, NAME, TYPE, PROPERTY,
REFRESH, STATUS, CONST_CHECKED, LEVEL) AS
  (SELECT TABLES.TABSCHEMA, TABLES.TABNAME,
       TABLES.TYPE, TABLES.PROPERTY,
              TABLES.REFRESH, TABLES.STATUS,
       TABLES.CONST_CHECKED, 0
      FROM SYSCAT.TABLES TABLES
   WHERE TABLES.TABSCHEMA='<schema name>'
   AND TABLES.TABNAME='<table name>'
          UNION ALL
   SELECT TABDEP.TABSCHEMA, TABDEP.TABNAME,
       TABDEP.DTYPE, TABLES.PROPERTY,
              TABLES.REFRESH, TABLES.STATUS,
       TABLES.CONST_CHECKED,
       DEP_TAB.LEVEL + 1
      FROM SYSCAT.TABDEP TABDEP, DEP_TAB,
     SYSCAT.TABLES TABLES
      WHERE TABDEP.DTYPE IN ('S', 'V', 'W', 'T')
       AND TABDEP.BSCHEMA = DEP_TAB.SCHEMA
       AND TABDEP.BNAME = DEP_TAB.NAME
       AND TABLES.TABSCHEMA = TABDEP.TABSCHEMA
       AND TABLES.TABNAME = TABDEP.TABNAME
       AND DEP_TAB.LEVEL < (SELECT
         DEP_CNT.TOTAL_DEP FROM DEP_CNT))
SELECT DISTINCT * FROM
(SELECT DEP_TAB.SCHEMA, DEP_TAB.NAME 
 FROM DEP_TAB
 WHERE STATUS='C'
       AND (DEP_TAB.TYPE = 'S'
       AND DEP_TAB.REFRESH = 'I' 
       AND SUBSTR(DEP_TAB.CONST_CHECKED,5,1)<>'F'
       OR DEP_TAB.TYPE = 'T' 
       AND SUBSTR(DEP_TAB.PROPERTY,2,1) = 'Y' 
       AND SUBSTR(DEP_TAB.CONST_CHECKED,7,1)<>'F')
 ) X;

sqlcode:-20296

sqlstate:55057

SQL20302W IN 或 LONG IN 子句中指定的表空间数超过了需要的表空间数。多余的表空间将被忽略。

说明

如果正在创建的表是非分区表,那么在 IN 或 LONG IN 子句中指定了多个表空间。将使用指定的第一个表空间来存储表数据或长数据。对于非分区表而言,在 IN 或 LONG IN 子句中只应该指定一个表空间。

如果正在创建的表是分区表,那么 IN 或 LONG IN 子句中指定的表空间数超过了对该表定义的分区数。如果将分区添加到分区表,并且创建该分区表时已指定要将长数据与规则数据存储在同一个表空间中,那么将忽略 ADD PARTITION 子句中指供的 LONG IN 子句。

已成功地处理了该语句,但是忽略了多余的表空间。

用户响应

无。

sqlcode:+20302

sqlstate:01675

SQL20303N 未创建分区唯一索引,这是因为索引定义未包含全部分区列,或者此索引针对 XML 数据进行创建。

说明

您可以通过在 CREATE INDEX 语句中指定 PARTITIONED 子句为分区表创建分区索引。在为分区表创建分区索引时,每个数据分区都在自己的索引分区中编制索引。

定义分区唯一索引时,必须在索引键中包括表分区键中所有的列。注意,任何包括在基于表达式的索引键中的列也必须直接指定,而不得作为表达式的组成部分。

此消息可能因多种原因而返回:

  • 尝试创建分区唯一索引,但未直接包括表分区键中的一列或多列。
  • 尝试针对分区表的 XML 数据创建唯一分区索引。

用户响应

在指定索引键中所有分区列的情况下再次提交 CREATE INDEX 语句。

sqlcode:-20303

sqlstate:42990

SQL20304N 未创建该索引,这是因为 XMLPATTERN 子句或数据类型为 XML 的列有问题。原因码:原因码

说明

当索引列中包括(或者缺少)使用数据类型 XML 定义的列时,可能会返回此消息。

原因码指示了索引定义无效的原因:

1

指定了使用数据类型 XML 定义的一列,但是定义中缺少 XMLPATTERN 子句用来指定要为每个 XML 值生成的索引键。

2

提供了 XMLPATTERN 子句,但是指定了多个索引列。

3

索引被定义为是唯一的(UNIQUE),而 XMLPATTERN 却包括 descendant、descendant-or-self AXIS、'//'、xml-wildcards、node() 或 processing-instruction()。

4

提供了 XMLPATTERN 子句,但是指定的单个索引列不是使用数据类型 XML 定义的。

5

XMLPATTERN 子句中指定的路径表达式未以“/”或“//”开头。

6

模式表达式在“/”后面未包含名称测试或种类测试。

7

模式表达式在轴步骤中使用了不支持的轴。只支持下列正向轴:child、attribute、descendant、self 以及 descendant-or-self。

8

模式表达式指定了无效的种类测试,或者某些语法不是模式表达式所支持的有效名称测试或种类测试。

9

模式表达式指定了谓词(括在方括号中的表达式),但是 XMLPATTERN 子句中的模式表达式不支持谓词。

10

模式表达式包含 XMLPATTERN 子句不支持的其他 XQuery 语法(上述原因码不适用)。

11

在 z/OS 数据库服务器上,模式表达式包含的步骤数超过了 50 个步骤的限制(当其不包含函数时)或 44 个步骤的限制(当其包含函数时)。

12

模式表达式中函数的自变量不满足在语法中指定的需求,或索引数据类型不正确。

13

此索引定义为,索引键的至少某个部分基于 XMLPATTERN 表达式。

用户响应

根据原因码对此错误作出响应:

1

指定 XMLPATTERN 子句。

2

如果打算将索引作为 XML 数据的键,那么应确保仅指定使用数据类型 XML 定义的一列。否则,应除去 XMLPATTERN 子句。

3

除去 UNIQUE 规范,或者更改 XMLPATTERN 定义以除去 descendant、descendant-or-self AXIS、'//'、xml-wildcards、node() 或 processing-instruction()。

4

除去 XMLPATTERN 子句,或者将指定列更改为使用数据类型 XML 定义的单个列。

5

确保模式表达式以“/”或“//”开头。将“/”或“//”作为缩写的 XQuery 语法在 CREATE INDEX 语句的 XMLPATTERN 子句中不受支持。

6

在模式表达式的“/”后面添加名称测试或种类测试。

7

从模式表达式中除去任何反向轴。例如,不能在模式表达式中使用父轴。

8

检查模式表达式是否包含与 CREATE INDEX 语句的 XMLPATTERN 子句语法规范不匹配的种类测试或名称测试。更正或除去不受支持的语法。

9

从模式表达式的 XMLPATTERN 子句中除去任何谓词。

10

更改模式表达式以除去 CREATE INDEX 语句的 XMLPATTERN 子句中不支持的语法。如果模式表达式包含星号(“*”),那么确保模式表达式中的名称测试正确地使用了通配符。如果与 QName 配合使用,那么通配符前后必须是冒号,否则它将成为乘法运算符。在模式表达式中,不能将星号用作乘法运算符。还应该确保 XMLPATTERN 子句未包含任何其他 XQuery 运算符、XQuery 函数或 XQuery FLWR 表达式(for、let、where 和 return)。

11

减少模式表达式中的步骤数。如果在 XML 文档中为值建立索引需要执行 50 个步骤以上,那么将无法创建索引。

12

检查模式表达式中的函数自变量,以确定它是否符合 CREATE INDEX 语句的 XMLPATTERN 子句的语法规范,并检查已建立索引的值的数据类型。此外,请检查您指定的函数在 XMLPATTERN 子句中是否受支持。更正或除去不受支持的语法。

13

请通过下列其中一种方式修改索引定义:

  • 除去 XMLPATTERN 子句
  • 除去所有基于表达式的键

sqlcode:-20304

sqlstate:429BS

SQL20305N 由于对表 表名 插入或更新由 索引标识 标识的索引时检测到错误,因此无法插入或更新 XML 值。原因码:原因码。对于与 XML 模式相关的原因码而言,XML 模式标识 = xml-模式标识,XML 模式数据类型 = xml-模式数据类型

说明

由于下列其中一个原因码所指示的原因,语句无法继续执行,并且表和索引保持未更改。模式数据类型和模式标识不适用于所有原因码。请参阅特定原因码以了解详细信息。

1

在所插入或更新的 XML 值中,至少一个 XML 节点值超出了由所标识的索引施加的长度约束。XML 列的索引被定义为使用 SQL 类型 VARCHAR,且该 SQL 类型具有指定的特定长度。但是,一个或多个 XMLPATTERN 结果值的长度超出用户对 VARCHAR 数据类型指定的长度约束。

2

在数据库服务器 V9.5 和更低版本上,在所插入或更新的 XML 值中,至少一个 XML 节点值是无法使用所标识索引来建立索引的列表数据类型节点。在索引中不支持列表数据类型节点。

3

在数据库服务器 V9.5 和更低版本上,至少一个 XML 节点值是有效的 XML 值,但由于它超出受支持的值范围,因此无法被强制转换为模式数据类型。

4

至少一个 XML 节点值是有效的 XML 值,但由于它超出受支持的值范围,因此无法将值的类型强制转换为所标识索引的索引数据类型。

5

至少一个 XML 节点值对于所标识索引的目标索引数据类型而言是无效的 XML 值,而索引定义指定无效的 XML 值必须返回错误(拒绝无效值)。

用户响应

确定索引名和 XML 模式子句。

通过发出以下使用 index-id 的查询,可以从 SYSCAT.INDEXES 中获取索引名(<index-name>,<index-schema>):

SELECT INDNAME,INDSCHEMA
  FROM SYSCAT.INDEXES
  WHERE IID =<index-id> AND
    TABSCHEMA ='schema ' AND TABNAME ='<table-name>'

确定索引名(<index-name>,<index-schema>)之后,就可以通过发出以下查询来从 SYSCAT.INDEXES 中获取索引数据类型和 XML 模式:

SELECT DATATYPE, PATTERN
FROM SYSCAT.INDEXXMLPATTERNS
WHERE INDSCHEMA = 'index-schema' AND
 INDNAME = 'index-name'

如果 <xml-schema-id> 不是“*N”,那么通过发出以下使用 <xml-schema-id> 的查询来获取包含所标识模式数据类型的 XML 模式的名称:

SELECT OBJECTNAME
  FROM SYSCAT.XSROBJECTS
  WHERE OBJECTID = '<xml-schema-id>'
1

使用 XML 模式来标识一组匹配的 XML 节点以确定哪些字符串值超出了索引所指定的长度约束。如果 XML 模式包含 fn:upper-case 函数,那么对于某些语言,字符串值在进行大写转换之后可能会超出索引所指定的长度约束。

2

在数据库服务器 V9.5 和更低版本上,使用 XML 模式名和 XML 模式来标识一组匹配的 XML 节点,以便根据相应模式中标识的模式数据类型 XML-模式数据类型 来进行检查和比较。确定哪些节点值是列表数据类型的节点。

3

在数据库服务器 V9.5 和更低版本上,使用 XML 模式名和 XML 模式来查找一组匹配的 XML 节点,以便根据相应模式中标识的模式数据类型 XML-模式数据类型 来进行检查和比较。确定哪些节点值超出了 XML 模式数据类型的受支持值范围。

4

使用 XML 模式来标识一组匹配的 XML 节点,以针对为所标识索引指定的数据类型进行检查和比较。确定哪些节点值超出了索引数据类型的受支持值范围。

5

使用 XML 模式来标识一组匹配的 XML 节点,以针对为所创建索引指定的数据类型进行检查和比较。确定哪些节点值对于索引数据类型无效。

sqlcode:-20305

sqlstate:23525

SQL20306N 由于在将 XML 值插入到索引中时检测到错误,因此无法创建一个 XML 列的索引。原因码:原因码。对于与 XML 模式相关的原因码而言,XML 模式标识 = xml-模式标识,XML 模式数据类型 = xml-模式数据类型

说明

由于下列其中一个原因码所指示的原因,语句无法继续执行,并且表保持未更改。模式数据类型和模式标识不适用于所有原因码。

1

在所插入的 XML 值中,至少一个 XML 节点值超出了由所创建的索引施加的长度约束。XML 列的索引被定义为使用 SQL 类型 VARCHAR,且该 SQL 类型具有指定的特定长度。一个或多个 XML 模式结果值的长度超出了用户对 VARCHAR 数据类型指定的长度约束。

2

在数据库服务器 V9.5 和更低版本上,在创建索引期间插入到索引中的 XML 值中,至少一个 XML 节点值是无法由指定索引建立索引的列表数据类型节点。在索引中不支持列表数据类型节点。

3

在数据库服务器 V9.5 和更低版本上,至少一个 XML 节点值是有效的 XML 值,但由于它超出受支持的值范围,因此无法被强制转换为模式数据类型。

4

至少一个 XML 节点值是有效的 XML 值,但由于它超出受支持的值范围,因此无法将值的类型强制转换为所标识索引的索引数据类型。

5

至少一个 XML 节点值对于所标识索引的目标索引数据类型而言是无效的 XML 值,而索引定义指定无效的 XML 值必须返回错误(拒绝无效值)。

用户响应

根据索引定义确定 XML 模式子句。

如果 <xml-schema-id> 不是“*N”,那么通过发出以下使用 <xml-schema-id> 的查询来获取包含所标识模式数据类型的 XML 模式的名称:

SELECT OBJECTNAME
          FROM SYSCAT.XSROBJECTS
  WHERE OBJECTID = '<xml-schema-id>'
1

使用 XML 模式来标识一组匹配的 XML 节点以确定哪些字符串值超出了索引所指定的长度约束。如果 XML 模式包含 fn:upper-case 函数,那么对于某些语言,字符串值在进行大写转换之后可能会超出索引所指定的长度约束。

2

在数据库服务器 V9.5 和更低版本上,使用 XML 模式来标识一组匹配的 XML 节点,以便根据相应模式中标识的模式数据类型 XML-模式数据类型 来进行检查和比较。确定哪些节点值是列表数据类型的节点。

3

在数据库服务器 V9.5 和更低版本上,使用 XML 模式来查找一组匹配的 XML 节点,以便根据相应模式中标识的模式数据类型 XML-模式数据类型 来进行检查和比较。确定哪些节点值超出了 XML 模式数据类型的受支持值范围。

4

使用 XML 模式来标识一组匹配的 XML 节点,以针对为索引指定的数据类型进行检查和比较。确定哪些节点值超出了索引数据类型的受支持值范围。

5

使用 XML 模式来标识一组匹配的 XML 节点,以针对为索引指定的数据类型进行检查和比较。确定哪些节点值对于索引数据类型无效。

如果该索引是分区索引,并且存在新连接的分区(即,SYSDATAPARTITIONS 目录表中 STATUS 列中的值为“A”的分区),那么您可能找不到对于索引数据类型而言无效的节点值。在这种情况下,请运行 SET INTEGRITY 语句以使新连接的分区进入联机状态。SET INTEGRITY 语句可能会移除违反其他约束的无效节点值,因此请再次发出该语句。如果仍无法处理该语句,请检查对于索引数据类型而言无效的节点值。

sqlcode:-20306

sqlstate:23526

SQL20307N 无法将表 源表名 连接至表 目标表名。原因码:原因码

说明

在 ALTER TABLE...ATTACH 语句中,目标表特征未足够地与源表特征匹配。原因码 指示了不匹配的类型。

1

源表与目标表的列数(SYSCAT.TABLES 中的 COLCOUNT 列)不匹配。

2

源表与目标表中的 COMPRESSION 子句不匹配。存在两种可能不匹配的情况:VALUE COMPRESSION 与 COMPRESSION SYSTEM DEFAULT 不匹配;COMPRESS YES STATIC 与 COMPRESS YES ADAPTIVE 不匹配。

3

表的 APPEND 方式不匹配。

4

源表与目标表的代码页不匹配。

5

源表是包含多个数据分区或包含 ATTACHED 或 DETACHED 数据分区的分区表。如果源表是分区表,那么仅当它只包含一个数据分区并且未包含 ATTACHED 或 DETACHED 数据分区时,才能连接该表。

6

源表是系统表、视图、MQT、类型表、按键序列组织的 (ORGANIZED BY KEY SEQUENCE) 表、已创建的临时表、已声明的临时表、系统时间段时间表或历史记录表。源表必须是与所列示的任何表都不对应的基本表。

7

目标表与源表是同一个表。不能将表连接到它自身。

8

对源表或目标表指定了 NOT LOGGED INITIALLY 子句,但未对两个表都指定此子句。

9

对源表或目标表指定了 DATA CAPTURE CHANGES 子句,但未对两个表都指定此子句。

10

表的分布子句不匹配。源表与目标表的分布键必须相同。

11

表的 ORGANIZE BY DIMENSIONS 子句不匹配。仅对其中一个表指定了 ORGANIZE BY DIMENSIONS 子句,或者组织维不同。

15

对表使用的安全保护功能不完全相同。表受不同的安全策略保护。

16

压缩子句(COMPRESS NO 或 COMPRESS YES)不匹配。

17

源表没有与目标分区表的索引相兼容的索引。目标表的索引是唯一索引或者是使用 REJECT INVALID VALUES 子句对 XML 列定义的索引。

18

源表没有与分区表的索引相兼容的索引,并且在 ALTER TABLE 语句中指定了 REQUIRE MATCHING INDEXES 子句。

19

所连接的源表的 XML 列的记录格式与目标分区表的记录格式不兼容。

20

源表已激活行访问控制,但是目标表没有激活行访问控制。

21

源表已激活列访问控制,并且至少有一个已启用的列掩码,但是目标表没有激活列访问控制。

22

目标表是应用程序时间段时间表,但是源表不是包含等价 BUSINESS_TIME 时间段列的应用程序时间段时间表。

30

仅源表或目标表的其中之一是使用随机依据生成方法的随机分发表。

99

目标表在已转换为大型表空间的表空间中,但尚未重组或重建其索引,因此不支持大型 RID。

用户响应

通过将源表修改为与目标表特征匹配,或者通过将目标表修改为与源表特征匹配,更正这两个表之间的不匹配情况。

对于原因码 4、5、6 和 11 而言,可以方便地修改源表或目标表的特征以实现兼容。(对于原因码 5 而言,源表名 是分区的,因此它必须刚好有一个可视的(既不是连接的也不是拆离的)数据分区。)

在难以修改源表或目标表的特征以实现兼容的情况下,请创建与目标表兼容的新表,然后将 源表名 中的数据复制到这个新表中。

1

可以使用以下语句来对缺少一列或多列的表添加列:

ALTER TABLE ... ADD COLUMN ... DEFAULT ...

确保所添加列的缺省值与该列所在的表中的列缺省值相同。查询该列所在表中该列的 SYSCAT.COLUMNS.IMPLICITVALUE。如果该值不是 NULL,那么使用 ALTER TABLE ADD COLUMN 语句的缺省子句来将缺省值设置为与 SYSCAT.COLUMNS.IMPLICITVALUE 中的值匹配。

注:只能在表中现有的最后一列后面添加列。如果缺少的列不是最后一列,请创建新的源表。

另外,可以从包含多余列的表中删除列:

ALTER TABLE ... DROP COLUMN ....
2

要使值压缩值匹配,请使用下列其中一个语句:

ALTER TABLE ... ACTIVATE VALUE
COMPRESSION
ALTER TABLE ... DEACTIVATE VALUE
    COMPRESSION

要使行压缩值匹配,请使用下列其中一个语句:

ALTER TABLE ... COMPRESS YES
ALTER TABLE ... COMPRESS NO

要使自适应压缩值匹配,请使用下列其中一个语句:

ALTER TABLE ... COMPRESS YES ADAPTIVE
ALTER TABLE ... COMPRESS YES STATIC
3

要使追加方式匹配,请使用下列其中一个语句:

ALTER TABLE ... APPEND ON
ALTER TABLE ... APPEND OFF
4

创建一个新的源表。

5

使用以下语句来从源表中拆离数据分区,直到只剩下一个可视数据分区为止:

ALTER TABLE ... DETACH PARTITION

包括任何必需的设置完整性语句。否则,创建新的源表。

6

创建具有所允许的类型的新源表。

7

确定正确的表以用作源表或目标表。

8

通过发出 COMMIT 语句,对最初未进行日志记录的表进行日志记录,或者通过输入以下语句来将进行了日志记录的表更改为最初不进行日志记录:

ALTER TABLE .... ACTIVATE NOT LOGGED
    INITIALLY
9

要对未打开数据捕获更改功能的表启用数据捕获更改功能,请运行以下语句:

ALTER TABLE ... DATA CAPTURE CHANGES

要对已打开数据捕获更改功能的表禁用数据捕获更改功能,请运行以下语句:

ALTER TABLE ... DATA CAPTURE NONE
10

由于无法更改跨多个数据库分区的表的分布键,因此建议您在这种情况下创建新的源表。要对单一分区数据库中的表更改分布键,请运行下列语句:

ALTER TABLE ... DROP DISTRIBUTION
ALTER TABLE ... ADD DISTRIBUTION
    (键规范)
11

创建新的源表并使该表的 ORGANIZE BY DIMENSIONS 子句与目标表匹配。

15

两个表必须由同一个安全策略保护,将同一个列定义为 SYSPROC.DB2SECURITYLABEL 类型,并且包含同一组受保护列。

16

使用 ALTER TABLE tablename COMPRESS [YES | NO] 来确保源表与目标表的 COMPRESS 属性匹配。

17

要查找没有相兼容源表索引的目标分区表索引的列表,请查看管理通知日志。对源表创建与目标分区表兼容的唯一索引或 XML 索引。

18

请执行下列其中一项操作:

  • 要查找没有相兼容的源表索引的目标表索引列表,请参阅管理通知日志。对源表创建缺少的索引,然后再试该请求。
  • 从 ALTER TABLE 语句中移除 REQUIRE MATCHING INDEXES 子句,然后再试该请求。
19

更新源表的 XML 记录格式,使其与目标表的记录格式匹配。您可以通过多种方法来更新表的 XML 记录格式。这两种方法都将更新表的 XML 记录格式:

  • 使用 ADMIN_MOVE_TABLE 过程对表执行联机表移动操作。
  • 请执行以下步骤:
    1. 使用 EXPORT 命令来创建表数据的副本。
    2. 使用 TRUNCATE 语句从表中删除所有行,并释放分配给该表的存储器。
    3. 使用 LOAD 命令将数据添加到表中。
20

请确保要连接至的表具有必需的访问控制,或者取消激活对于所连接的表的访问控制。

21

请确保要连接至的表具有必需的访问控制,或者取消激活对于所连接的表的访问控制。

22

通过下列其中一种方式对原因码 22 作出响应:

  • 如果源表未定义 BUSINESS_TIME 时间段,请通过对源表使用带有 ADD PERIOD BUSINESS_TIME 操作的 ALTER TABLE 语句,改变源表中与目标表中的 BUSINESS_TIME 时间段列对应的列。
  • 如果源表定义了 BUSINESS_TIME 时间段,请执行下列步骤:
    1. 通过对源表使用带有 DROP PERIOD BUSINESS_TIME 操作的 ALTER TABLE 语句,从源表中移除与目标表中的时间段不匹配的时间段。
    2. 通过对源表使用带有 ADD PERIOD BUSINESS_TIME 操作的 ALTER TABLE 语句,向源表添加与目标表中的 BUSINESS_TIME 时间段列对应的列。
30

确保两个表都是使用随机依据生成方法的随机分发表。

99

通过发出以下命令,将目标表的索引转换为支持大型 RID:REORG INDEXES ALL FOR TABLE target-tablename ALLOW NO ACCESS。

sqlcode:-20307

sqlstate:428GE

SQL20308N 当输入包括只有超过 1000 字节长的空格字符的文本节点字符串值时,不允许使用 STRIP WHITESPACE 选项进行解析。

说明

如果遇到了一个仅由空格字符组成、并且长度超过了 1000 字节的文本节点字符串值,那么使用 STRIP WHITESPACE 选项进行 XML 解析将失败。

无法处理该语句。

用户响应

使用 PRESERVE WHITESPACE 选项;或者修改输入,从字符串值仅由空格字符组成的任何文本节点中除去 1000 字节之后多余的空格。

sqlcode:-20308

sqlstate:54059

SQL20309N 无效使用了容许错误的嵌套表表达式。

说明

在下列位置不能引用容许错误的嵌套表表达式(指定了 RETURN DATA UNTIL 子句的嵌套表表达式):
  • 具体化查询定义的全查询。
  • 包含插入、更新或删除操作的同一条语句或复合语句。
  • 定位 DELETE 语句或定位 UPDATE 语句的游标的 SELECT 语句。

无法处理该语句。

用户响应

除去该嵌套表表达式的 RETURN DATA UNTIL 子句,然后重新提交该语句。

sqlcode:-20309

sqlstate:428GG

SQL20316N 编译环境无效。原因码:原因码

说明

由于附带提供的原因码中所指定的原因,所提供的编译环境无效。
  1. 所提供的编译环境的格式不正确。
  2. 所提供的编译环境的版本不受支持。
  3. 所提供的编译环境的大小无效。
  4. 所提供的编译环境使用的代码页与此数据库不兼容。

无法执行该语句。

用户响应

操作视原因码而定,如下所示:
  1. 再次获取编译环境并确保在使用之前不会对它进行任何形式的改变。
  2. 使用兼容的软件级别再次获取编译环境。
  3. 再次获取编译环境并确保在使用之前不会对它进行任何形式的改变。
  4. 使用代码页与此相同的数据库再次获取编译环境。

sqlcode:-20316

sqlstate:51040

SQL20317N 命令或语句失败,因为对于对其执行该命令或语句的数据库,仅当为该数据库至少定义了一个存储器组时,此操作才受支持。

说明

自动存储器可简化表空间的存储管理。当您创建存储器组时,请指定数据库管理器会将数据置于的存储路径。在数据库中创建存储器组之后,该数据库始终有一个缺省存储器组。当您创建并填充自动存储器表空间时,数据库管理器将管理这些自动存储器表空间的容器和空间分配,以使用缺省存储器组或者使用所指定的存储器组。

如果尝试对没有定义存储器组的数据库执行一项需要存储器组的操作,就会返回此消息,如下列示例所示:

  • 创建自动存储器表空间
  • 将表空间改变为使用自动存储器
  • 通过运行附带 USING AUTOMATIC STORAGE 子句的 SET TABLESPACE CONTAINERS 命令,以使用自动存储器进行复原操作
  • 从数据库中删除存储路径

用户响应

要对此数据库使用自动存储器功能,请至少创建一个存储器组。

sqlcode:-20317

sqlstate:55060

SQL20318N ALTER TABLESPACE 语句失败,因为不允许更改表空间类型。表空间名称:表空间名称。表空间类型:表空间类型。不兼容的子句:子句

说明

下列操作与所指示的相应表空间类型不兼容。

  • 定义为 MANAGED BY AUTOMATIC STORAGE 的表空间让数据库管理器来管理其容器。这意味着数据库管理器将自动扩展现有容器,或者根据为与此表空间相关联的存储器组定义的存储路径来创建新的容器。不能通过 ALTER TABLESPACE 语句来改变定义为 MANAGED BY AUTOMATIC STORAGE 的表空间的容器。
  • 不能对用于 DMS 或 SMS 表空间的 DATA TAG、OVERHEAD 或 TRANSFERRATE 子句指定 INHERIT 选项
  • 不能对 DMS 或 SMS 表空间使用“USING STOGROUP”子句
  • 不能对临时自动存储器表空间更改 STOGROUP
  • 不能为临时表空间或者系统目录表空间设置 DATA TAG

用户响应

请重写 ALTER TABLESPACE 语句,以确保执行的操作与表空间类型兼容。

sqlcode:-20318

sqlstate:42858

SQL20319N 不允许在自动存储器表空间上执行 SET TABLESPACE CONTAINERS 命令。

说明

与自动存储器表空间相关联的容器受数据库的控制,不能通过 SET TABLESPACE CONTAINERS 命令重新定义。

用户响应

要对数据库中的所有自动存储器表空间指定一组新的路径,可使用 RESTORE DATABASE 命令的 ON 选项并指定一个或多个路径。

sqlcode:-20319

sqlstate:55061

SQL20320N 对表空间指定的最大大小无效。

说明

在 CREATE TABLESPACE 或 ALTER TABLESPACE 语句中指定的最大大小无效。如果要创建表空间,那么最大大小必须大于或等于指定的初始大小。如果要改变现有表空间,那么最大大小必须大于或等于表空间的当前大小。

用户响应

按此消息的解释所述为最大大小指定更大的值。

sqlcode:-20320

sqlstate:560B0

SQL20321N 由于在数据库中没有存储器组时无法提供存储路径,因此命令失败。

说明

备份映像中的数据库未定义存储器组,但是以下列其中一种方式提供了存储路径:

  • 在对 RESTORE DATABASE API 的调用中包括了存储路径。
  • 使用 RESTORE DATABASE 命令的 ON 选项指定了存储路径。
  • 使用 SET STOGROUP PATHS 命令指定了存储路径。
对于版本低于 V10 的 DB2 数据库版本:

在 V10 之前,必须将备份映像中的数据库定义为使用自动存储器,这样才能指定存储路径。在尚未启用自动存储器的数据库备份映像中,如果尝试执行一项需要自动存储器的操作,那么 V10 之前的数据库服务器就会返回此消息。

用户响应

使用适当的操作来解决问题:

  • 当调用 RESTORE DATABASE API 时不要包括任何存储路径。
  • 不要指定 RESTORE DATABASE 命令的 ON 选项。
  • 不要指定 SET STOGROUP PATHS 命令。

sqlcode:-20321

sqlstate:55062

SQL20322N 提供的数据库名称与应用程序连接到的数据库的名称 服务器名称 不匹配。

说明

数据库名称与应用程序当前连接到的数据库的名称 服务器名称 不匹配。数据库名称是由指定的数据库别名显式指定或确定的。

用户响应

如果目的是要改变当前连接的数据库,那么从语句中除去数据库名称或指定正确的名称。如果目的是要改变具有给定名称的数据库,而不是改变当前连接的数据库,那么在重新提交语句之前,断开与当前数据库的连接并连接到指定的数据库。如果正在备份或复原数据库,那么连接到该数据库,并提供正确的数据库名称或数据库别名。

sqlcode:-20322

sqlstate:42961

SQL20323N 存储路径 存储路径 对于存储器组而言已存在或者指定了多次。

说明

要添加的存储路径对于存储器组而言已经存在,或者提供的列表中有重复的项。

用户响应

从命令或语句中除去该路径并重新提交此命令或语句。

sqlcode:-20323

sqlstate:42748

SQL20324N 操作 操作 正在进行中。

说明

在此事务中已经发出了操作 操作,或者已经将该操作作为单独的未落实事务的一部分发出。

用户响应

落实具有未完成的操作的事务,然后重新发出该语句。

sqlcode:-20324

sqlstate:25502

SQL20325N 对表空间 表空间名 添加、扩展或设置容器将超出最大大小 最大大小

说明

表空间 表空间名 将 AUTORESIZE 设置为 YES 并定义了最大大小。但是,通过 ALTER TABLESPACE 语句添加至表空间的空间量或通过 SET TABLESPACE CONTAINERS 命令设置的空间量将导致表空间的大小大于此最大大小。

用户响应

如果要执行 ALTER TABLESPACE 语句,那么在重新提交语句之前增大表空间的 MAXSIZE,以使它大于或等于表空间的当前大小加上要添加的空间量。另外,也可以将表空间的 AUTORESIZE 设置为 NO。注意,禁用自动调整大小将导致 MAXSIZE 和 INCREASESIZE 的当前值丢失。

如果要执行 SET TABLESPACE CONTAINERS 命令,那么指定总大小小于或等于表空间的最大大小的一组容器。

sqlcode:-20325

sqlstate:54047

SQL20326N 字符串 结尾的 XML 元素名称空间、属性名称、名称空间前缀或 URI 超过了 1000 字节这一限制。

说明

系统正在处理元素名称、属性名称、名称空间前缀或 URI,以便为该字符串生成一个内部标识。而该字符串的长度超过了以 UTF-8 表示字符串时不能超过 1000 字节这一限制。字符串 的值给出了超过这一限制的字符串的结束字符。

无法处理该语句。

用户响应

尝试使用更短的元素名称、属性名称、名称空间前缀或 URI,然后再次尝试执行该操作。

sqlcode:-20326

sqlstate:54057

SQL20327N XML 路径的内部表示超过了 125 层这一限制。

说明

系统正在生成 XML 路径的内部表示。该路径可能存在于正在解析或验证的 XML 文档或者存在于正在构造的 XML 值中。由于文档嵌套得太深,因此,已经达到了限制。

无法处理该语句。

用户响应

对于文档或者已构造的 XML 值,减少所使用的元素和属性的层数。

sqlcode:-20327

sqlstate:54058

SQL20328N 已经为由 模式名 标识的 XML 模式添加了具有目标名称空间 名称空间 和模式位置 位置 的文档。

说明

调用 XSR_ADDSCHEMADOC 存储过程时可能会发生此错误。在 XML 模式内,不能有两个文档具有相同的目标名称空间和模式位置。

无法处理该语句。

用户响应

更改正在添加的文档的名称空间或模式位置。

sqlcode:-20328

sqlstate:42749

SQL20329N XML 模式的完整性检查失败,因为缺少一个或多个 XML 模式文档。缺少的一个 XML 模式文档由 uri-类型 标识为 uri

说明

XML 模式注册完整性处理已经确定:完整的 XML 模式需要多个 XML 模式文档,然而 XML 模式存储库中至少缺少一个 XML 模式文档。缺少的 XML 模式文档是由目标名称空间或模式位置 uri-类型 和名称空间或 XML 模式 uri 的值来标识的。对缺少的 XML 模式文档的引用可能包括在为该 XML 模式定义的其中一个 XML 模式文档中。

无法处理该语句。

用户响应

将该 XML 模式缺少的任何 XML 模式文档添加至 XML 模式存储库中。必须添加由 uri-类型 标识为 uri 的文档。

sqlcode:-20329

sqlstate:428GI

SQL20330N 在 XML 模式存储库中未找到由 XML uri-类型-1 uri1 和 XML uri-类型-2 uri2 标识的 xsr-对象类型

说明

处理语句或命令时,需要使用 XML 模式存储库中的 XSROBJECT,但是未找到该存储库。

如果 xsr-对象类型 是 XMLSCHEMA,那么验证 XML 值时需要使用 XML 模式。uri-类型-1 是 NAMESPACE,并且可能已经在语句中使用 ACCORDING TO XMLSCHEMA URI 子句显式标识了 XML 模式目标名称空间 uri1,也可能在 XML 值中对其进行了标识。如果还指定了可选的 LOCATION 子句,那么 uri-类型-2 是 LOCATION,并且 uri2 指示此值,否则它是一个空字符串。

如果 xsr-对象类型 是 EXTERNAL ENTITY,那么解析或验证 XML 值时需要使用 XML 外部实体。外部实体的标识基于系统标识为 uri1uri-类型-1 SYSTEM ID 以及公用标识为 uri2uri-类型-2 PUBLIC ID。如果 uri2 是空的,那么表示没有公用标识可用。

不能处理语句或命令。

用户响应

在处理 XML 值之前,注册由 uri1uri2 标识的 XML 模式或 XML 外部实体。

sqlcode:-20330

sqlstate:22532 和 4274A

SQL20331N XML 注释值 字符串 无效。

说明

XML 注释不能包含两个相邻的连字符,并且不能以连字符结尾。

用户响应

确保 XML 注释的值有效。

sqlcode:-20331

sqlstate:2200S

SQL20332N XML 处理指令值 字符串 无效。

说明

XML 处理指令不能包含子串“?>”。

用户响应

确保 XML 处理指令的值有效。

sqlcode:-20332

sqlstate:2200T

SQL20333N 不能执行操作,因为它违反了数据源 数据源 的完整性约束。相关联的文本和标记为 标记

说明

插入、更新或删除操作违反了在联合数据源中定义的完整性约束。违例的原因可能是由于在数据源中发生了触发器交互。

无法执行该语句。对象表的内容未更改。

有些数据源未提供有关所违反的约束的特定信息。其他数据源在 db2diag 日志文件中提供了更多信息。

用户响应

检查操作所引用的对象的约束以确定违例的原因。查看 db2diag 日志文件,以了解有关所违反的约束的更多信息。

sqlcode:-20333

sqlstate:23527

SQL20334N 从 Web Service 数据源 标记 中接收到了 SOAP 故障。相关联的文本和标记为 文本和标记

说明

正在使用“简单对象访问协议”(SOAP)的 Web Service 数据源 数据源名称 将一个 SOAP 故障发送至了联合服务器。有关此错误情况的详细信息位于 标记 中。

用户响应

使用 标记 中提供的信息来找出数据源 数据源名称 中的 SOAP 故障的根本原因并加以更正。

sqlcode:-20334

sqlstate:560CB

SQL20335N XML 模式存储库中存在由 XML uri-类型-1 uri1uri-类型-2 uri2 标识的多种 xsr-对象类型

说明

有多个已注册的 XSROBJECT 与用来标识 XML 模式或外部实体的 URI 相匹配。

如果 xsr-对象类型 是 XMLSCHEMA,那么 XML 模式的标识基于 XML 模式目标名称空间为 uri1uri-类型-1 NAMESPACE 以及 XML 模式位置为 uri2uri-类型-2 LOCATION。如果 uri2 是空的,那么表示未指定模式位置。

如果 xsr-对象类型 为 EXTERNAL ENTITY,那么外部实体的标识基于系统标识为 uri1uri-类型-1 SYSTEM ID 以及公用标识为 uri2uri-类型-2 PUBLIC ID。如果 uri2 是空的,那么表示未指定公用标识。

无法处理该语句。

用户响应

如果同时指示了 uri1uri2,那么从 XML 模式存储库中删除类型为 xsr-对象类型 的 XSROBJECT,或者对于 XML 模式,为这些 XML 模式的其中一种 XML 模式显式指定 XMLSCHEMA ID。如果模式位置(uri2)是空的,那么可能也可以显式指定 XMLSCHEMA URI 和 LOCATION 来唯一地标识 XML 模式。

sqlcode:-20335

sqlstate:22533 和 4274B

SQL20336N 无法将数据类型为 源数据类型 的值通过 XMLCAST 转换为类型 目标数据类型

说明

语句包含 CAST,其第一个操作数具有数据类型 源数据类型,它将要强制类型转换为数据类型 目标数据类型。不支持此强制类型转换。

用户响应

更改源或目标的数据类型,以使强制类型转换受支持。对于预定义数据类型,这些内容已在 SQL Reference 中归档。对于涉及用户定义的单值类型的强制类型转换,强制类型转换可在基本数据类型与用户定义的单值类型之间进行,或者从可提升为基本数据类型的数据类型强制类型转换到用户定义的单值类型。

sqlcode:-20336

sqlstate:42846

SQL20337N 缺少 BY REF 子句,或者不正确使用了该子句。原因码:原因码

说明

下面根据 原因码 可能具有的值来说明了该错误。
  1. 当 XMLQUERY、XMLEXISTS 或 XMLTABLE 函数的自变量的数据类型不是 XML 时,不能指定 BY REF 子句。当在 XMLTABLE 列定义中发出了 BY REF 子句 并且列类型不是 XML 时,也可能会发生此错误。
  2. 当 XMLTABLE 子句定义数据类型为 XML 的一列时,必须指定 BY REF 子句。
  3. 在返回 XML 序列的 XMLQUERY 函数中必须指定 BY REF 子句。可以在 RETURNING SEQUENCE 子句后面或者在 PASSING 子句中显式地指定 BY REF 子句。

用户响应

根据 原因码 执行下列操作。
  1. 除去与 XML 以外的数据类型相关联的 BY REF 子句。
  2. 指定一个 BY REF 子句,并使 XMLTABLE 函数的数据类型自变量是 XML。
  3. 在 RETURNING SEQUENCE 关键字后面指定 BY REF 子句,或者指定一个 PASSING BY REF 子句。

sqlcode:-20337

sqlstate:42636

SQL20338N XMLCAST 规范的源操作数或目标操作数的数据类型必须是 XML。

说明

XMLCAST 规范必须具有一个数据类型为 XML 的操作数。可以通过 XMLCAST 操作将 XML 类型值转换为 SQL 类型值,也可以从 SQL 类型值转换为 XML 类型值。XMLCAST 规范还接受源操作数和目标操作数的数据类型都是 XML,但是在这种情况下实际上就不会执行强制类型转换操作了。

用户响应

如果源操作数和目标操作数都是 SQL 数据类型而不是 XML 数据类型,那么使用 CAST 规范。否则,应更改 XMLCAST 规范,使得至少有一个操作数是 XML 数据类型。

sqlcode:-20338

sqlstate:42815

SQL20339N XML 模式 xml-模式名称 处于不正确的状态,无法执行操作 操作

说明

无法对由 XML 模式标识 xml-模式名 标识的 XML 模式执行由 操作 指定的操作,因为它没有处于正确状态。例如,已经完成了 XML 模式,而操作仍在尝试添加其他 XML 模式文档。

无法处理该语句。

用户响应

检查 XML 模式的当前状态,以确定对于该 XML 模式有效的操作。如果已经完成了该 XML 模式,那么不能再添加其他 XML 模式文档。

sqlcode:-20339

sqlstate:55063

SQL20340N XML 模式 xml-模式名称 至少包括组件标识为 组件标识 的名称空间 名称空间 中的这样一个 XML 模式文档:该文档未通过使用包括或重新定义来连接至同一名称空间中的其他 XML 模式文档。

说明

由标识 xml-模式名 标识的 XML 模式包括名称空间 名称空间 中的多个 XML 模式文档。这些 XML 模式文档中至少有一个文档未通过使用包括或重新定义来连接至同一名称空间中的其他 XML 模式文档。这样的一个 XML 模式文档在 XML 模式存储库中是用组件标识 组件标识 来标识的。

无法处理该语句。

用户响应

更正 XML 模式文档,以便使用包括或重新定义来连接了名称空间中的所有 XML 模式文档。可以使用 组件标识 来查询 SYSCAT.XSROBJECTCOMPONENTS,以了解有关名称空间未连接的特地引用的 XML 模式文档的更多信息。

sqlcode:-20340

sqlstate:22534

SQL20341W 忽略了传送操作,因为 授权标识 已经是数据库对象的所有者。

说明

指定了 TRANSFER 语句来将数据库对象传送至授权标识 授权标识。该授权标识已经是数据库对象的所有者。不再需要传送该数据库对象。

用户响应

不需要执行任何操作。

sqlcode:+20341

sqlstate:01676

SQL20342N 授权标识 对类型为 对象类型 的对象 对象名 不具有成为该对象的所有者所必需的一种或多种必需特权 特权列表

说明

TRANSFER 语句尝试将对象的所有权转移给授权标识 授权标识,而该授权标识对该对象的所有者却没有必需的特权。对 对象名 对象的特权 特权列表 就是缺少的特权。

无法处理该语句。

用户响应

为授权标识 授权标识 授予对 对象名 对象的所有需要的特权(由 特权列表 指示),以使该授权标识成为正在传送的对象的所有者。

sqlcode:-20342

sqlstate:42514

SQL20344N 由于存在涉及 对象名-2 的依赖关系,因此移交 对象名-1 的所有权失败。原因码:原因码

说明

创建对象时,会将该对象的所有权分配给一个授权标识。所有权表示用户有权在任何适用的 SQL 或 XQuery 语句中引用该对象。您可以使用 TRANSFER OWNERSHIP 语句来移交数据库对象的所有权。尝试移交对象的所有权失败时,将返回此消息。原因码指示了故障的具体信息:

1

由于表层次结构 对象名-2 中的表 对象名-1 是子表,因此不可移交。

2

由于视图层次结构 对象名-2 中的视图 对象名-1 是子视图,因此不可移交。

3

由于定义索引 对象名-1 时基于的表 对象名-2 是已声明的全局临时表,因此无法移交此索引。

4

由于方法体或函数 对象名-1 是在用户定义的类型 对象名-2 创建时隐式生成的,因此不可移交。

5

无法传输程序包 object-name1,这是因为 SQL 例程、触发器或索引 object-name2 依赖于该程序包。

6

由于事件监视器 对象名-1 处于活动状态,因此不可移交。

7

由于视图 对象名-1 是基于表达式且名为 对象名-2 的索引的统计视图,且由系统生成,因此移交此视图失败。

用户响应

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

1

移交整个表层次结构。

2

移交整个视图层次结构。

3

删除已声明的全局临时表。

4

删除创建了此方法或函数的类型。

5

移交此 SQL 过程。

6

将事件监视器状态设置为不活动。

7

移交基于表达式的索引的所有权。

sqlcode:-20344

sqlstate:429BT

SQL20345N XML 值不是具有单个根元素的格式良好的文档。

说明

XML 值不是格式良好的文档。正在存储在表中或者正在验证的 XML 值必须是具有单个根元素的格式良好的 XML 文档。虽然 XML 值的文档节点可以包含注释节点或处理指令节点子项,但它不能包含任何文本节点子项。

无法处理该语句。

用户响应

存储或验证 XML 值时需要修改该 XML 值,以使它成为具有单个根元素的格式良好的文档。如果文档是格式良好的,请确保该 XML 值的文档节点只包含单个元素节点作为子项,不包含任何文本节点子项。否则,不要尝试存储或验证该 XML 值。

sqlcode:-20345

sqlstate:2200L

SQL20346N XML 模式 xml-模式标识 不包含名称空间 名称空间-uri 中的名为 元素局部名 的全局元素。

说明

验证操作指定:名称空间 名称空间-uri 中的显式元素局部名 元素局部名 应该是要验证的 XML 文档的根元素。但是,具有 SQL 标识 xml-模式标识 的 XML 模式没有将 元素局部名 声明为名称空间 名称空间-uri 中的全局元素。

无法处理该语句。

用户响应

检查名称空间 名称空间-uri 中的元素局部名 元素局部名 对于正在验证的 XML 模式和 XML 文档是正确的。更改元素局部名、名称空间或 XML 模式,然后重试该验证。

sqlcode:-20346

sqlstate:22535

SQL20347N XML 值不包含名称空间 名称空间-uri 中的名为 元素局部名 的根元素。

说明

XML 文档的根元素与为验证指定的名称空间 名称空间-uri 中的必需元素局部名 元素局部名 不匹配。

无法处理该语句。

用户响应

提供一个 XML 值,并且其根元素与指定的元素局部名和名称空间相匹配。如果 XML 值正确,那么更改指定的元素局部名或名称空间。

sqlcode:-20347

sqlstate:22536

SQL20349N 无法访问插件 插件名 的用户映射存储库中的用户映射。原因码:原因码

说明

无法访问插件 插件名 的用户映射存储库中的用户映射。原因码 指示了发生错误的原因:

1

无法装入用户映射插件。

2

用户映射插件所报告的用户映射插件 API 的版本与版本联合支持不兼容。

3

无法与用户映射存储库建立连接,或者连接请求已超时。

4

在用户映射存储库中找不到用户映射条目。

5

在处理用户映射存储库中的用户映射条目时发生了解密错误。

6

与用户映射存储库断开连接失败。

7

已经将无效参数传递给了用户映射插件。

8

检测到未经授权就调用用户映射插件。

9

终止用户映射插件失败。

10

检测到意外错误。

用户响应

请参阅联合文档以了解有关用户映射插件的详细信息。操作取决于 原因码,如下所示:

1

验证用户映射插件存在并且位于正确位置。

2

确保用户映射插件正在使用联合支持的用户映射插件 API 版本,并且它报告的是正确的版本号。

3

验证用户映射存储库已启动且正在运行,并且用户映射插件的存储库连接参数正确。

4

在用户映射存储库中创建相应的用户映射条目。

5

确保正确实现了用户映射插件中的解密逻辑。

6

检查用户映射存储库和网络是否已启动并且正在运行。

7

确保传递给用户映射插件的所有参数值都正确。

8

验证联合具有调用用户映射插件的权限。

9

验证是否可以释放插件级别全局资源。

10

确保插件将该错误映射到其中一个已定义的错误。db2diag 日志文件可能包含该错误的跟踪信息。

sqlcode:-20349

sqlstate:429BU

SQL20350N 插件 插件名 的用户映射存储库中的认证失败。

说明

无法访问插件 插件名 的用户映射存储库中的用户映射,因为用户映射存储库中的认证失败。

用户响应

请参阅联合文档以了解有关用户映射插件的详细信息。更正插件的存储库连接凭证参数。

sqlcode:-20350

sqlstate:42516

SQL20351W 对于已经定义了插件的包装器 包装器名称 的服务器忽略了包装器选项。

说明

当创建或改变了相应包装器的与 DB2_UM_PLUGIN 相关的选项时,未覆盖对服务器指定的与 DB2_UM_PLUGIN 相关的现有选项。

用户响应

要更改已经为服务器指定的与 DB2_UM_PLUGIN 相关的选项,可直接改变服务器选项。

sqlcode:+20351

sqlstate:01677

SQL20352W 对用户映射的更改只应用于联合目录表,而不应用于外部用户映射存储库。

说明

已经为服务器设置了 DB2_UM_PLUGIN 选项。此服务器的用户映射是从外部用户映射存储库中读取的,但是 CREATE USER MAPPING、ALTER USER MAPPING 和 DROP (USER MAPPING) 语句只会影响联合目录表中的用户映射。

用户响应

使用与外部用户映射存储库的另一个接口来创建、改变或删除用户映射。

sqlcode:+20352

sqlstate:01678

SQL20353N 涉及到比较的操作不能使用定义为数据类型 类型名 的操作数 名称

说明

在涉及到比较的操作中不允许使用由 名称 标识的、定义为 类型名 数据类型的值。下列各项中不允许产生 类型名 数据类型的表达式:
  • SELECT DISTINCT 语句
  • GROUP BY 子句
  • ORDER BY 子句
  • 带有 DISTINCT 的聚集函数
  • 除 UNION ALL 之外的集合运算符的 SELECT 或 VALUES 语句。

无法处理该语句。

用户响应

不支持所请求的对 类型名 数据类型的操作。可以使用强制类型转换函数或者其他某些函数来将值的数据类型更改为受支持的数据类型。

sqlcode:-20353

sqlstate:42818

SQL20354N 对表 表名 的 ROW CHANGE TIMESTAMP 列所作的设定无效。

说明

对 ROW CHANGE TIMESTAMP 列所作的设定由于下列其中一个原因无效。ROW CHANGE TIMESTAMP 列不能:
  • 是包含主键的列。
  • 是包含外键的列。
  • 是包含函数依赖性 DEPENDS ON 子句的列。
  • 是包含数据库分区键的列。
  • 对临时表进行定义。

无法执行该语句。

用户响应

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

sqlcode:-20354

sqlstate:429BV

SQL20356N 无法截断 表名 表,因为此表存在 DELETE 触发器,或者此表是引用约束中的父表。

说明

由于下列原因之一而未能处理 TRUNCATE 语句:

  • TRUNCATE 语句将导致激活 DELETE 触发器。但是,此语句隐式或显式指定了 RESTRICT WHEN DELETE TRIGGERS。当要截断的表存在 DELETE 触发器时可能会发生这种情况,并且 TRUNCATE 语句的结果将激活触发器。
  • 要截断的表是引用约束中的父表。

无法处理该语句。

用户响应

如果由于存在 DELETE 触发器而导致此语句失败,那么在 TRUNCATE 语句上指定 IGNORE DELETE TRIGGERS 子句。如果由于引用约束而导致此语句失败,那么使用 ALTER TABLE 语句来删除引用约束,然后重新发出 TRUNCATE 语句。

sqlcode:-20356

sqlstate:428GJ

SQL20357N 一个或多个联合一阶段落实数据源站点已经使落实或回滚处理失败。因此,事务结果可能不会在所有位置都一致。可以处理后续 SQL 语句。原因码为 原因码

说明

联合服务器已经发送了事务落实或回滚请求,而一个或多个联合一阶段落实数据源站点无法完成请求。这可能是由于服务器故障、通信链路故障或者其他故障造成的。未彻底落实或回滚事务。

原因码指出了具体情况。
  1. 落实故障不涉及到更新联合数据源。
  2. 落实故障涉及到更新联合数据源。
  3. 回滚故障不涉及到更新联合数据源。
  4. 回滚故障涉及到更新联合数据源。
  5. 由于 db2fmp 进程在联合服务器中异常终止而使得落实或回滚处理出错,错误为“-430”。

用户响应

查阅管理通知日志以了解详细信息。可能需要在联合一阶段落实数据源站点手动应用补偿操作。可能有必要与系统管理员联系以获取帮助。

对于原因 5,可使应用程序与联合服务器断开连接(例如,发出 CLP 命令“connect reset”),然后再重新连接。

sqlcode:-20357

sqlstate:40003

SQL20358N 落实或回滚处理遇到了错误。在某些联合两阶段落实数据源中的事务可能是不确定的。可以处理后续 SQL 语句。原因码为 原因码

说明

联合服务器已经发送了事务落实或回滚请求,而一个或多个联合两阶段落实数据源站点无法完成请求。这可能是由于服务器故障、通信链路故障或者其他故障造成的。事务在联合两阶段落实数据源站点中可能是不确定的。

原因码指出了具体情况。
  1. 缺少来自联合数据源站点的落实确认。
  2. 缺少来自联合数据源站点的异常终止确认。
  3. 回滚处理遇到了错误。事务在联合两阶段落实数据源站点中可能是不确定的。
  4. 由于 db2fmp 进程在联合服务器中异常终止而使得落实或回滚处理出错,错误为“-430”。

用户响应

确定导致错误的原因。可能有必要与系统管理员联系以获取帮助,因为引起错误的最常见原因是联合服务器故障、联合数据源站点故障或者连接故障。对于联合服务器故障,RESTART DATABASE 命令将完成对此事务的落实或回滚处理。对于联合数据源站点故障,应重新启动失败的数据源。对于连接故障,则咨询网络管理员和/或通信专家,以便确定问题的原因。

对于原因 3,检查联合数据源站点上可能存在的不确定事务,如果存在这样的事务,则手动解析这些事务。

对于原因 4,可使应用程序与联合服务器断开连接(例如,发出 CLP 命令“connect reset”),然后再重新连接。

sqlcode:-20358

sqlstate:08007

SQL20360W 无法为指定的授权标识建立可信连接。

说明

无法为指定的授权标识建立可信连接。当前未定义相匹配的可信上下文,或者服务器不支持可信上下文。

尝试创建可信连接未成功,但是创建了正常连接。

联合系统用户:如果在联合请求期间返回了此消息,那么尝试在联合数据库与远程服务器之间创建可信连接未成功,但是创建了正常连接。

用户响应

确保服务器支持可信上下文并且已经正确定义了可信上下文,然后尝试重新建立可信连接。

联合系统用户:确保远程服务器支持可信上下文,并确保在远程服务器上正确地定义了该可信上下文。

sqlcode:+20360

sqlstate:01679

SQL20361N 在可信上下文 上下文名称 中,使用授权标识 权限名 的切换用户请求失败,原因码为 原因码

说明

可信上下文 上下文名称 中的切换用户请求失败。可信连接处于未连接状态。

用户响应

使用授权标识 权限名 以及下面对原因码 原因码 的说明来确定要执行的操作。
1
不允许该授权标识使用可信上下文。提供一个授权标识并允许它使用可信上下文定义中所描述的可信上下文。
2
切换用户请求不包括认证令牌。为授权标识提供认证令牌。
3
可信上下文对象已被禁用、删除或者其系统授权标识已改变。这时只允许使用在建立该可信连接时所使用的授权标识。请提供此授权标识。

sqlcode:-20361

sqlstate:42517

SQL20362N 不能删除或改变值为 的属性 属性名,这是因为它并不是可信上下文 上下文名称 定义的一部分。

说明

为可信上下文指定了属性 属性名,但是未使用具有此名称的属性来定义该可信上下文。未能处理该语句。

用户响应

除去不受支持的属性名,然后重新发出该语句。

sqlcode:-20362

sqlstate:4274C

SQL20363N 对于可信上下文 上下文名称,值为 的属性 属性名 并不是唯一的。

说明

在创建或改变可信上下文 上下文名称 期间,为 属性名 属性指定了重复值 。对于可信上下文,每一对属性名和值都必须是唯一的。

无法处理该语句。

用户响应

除去所指定的不是唯一的 属性名,然后重新发出该语句。

sqlcode:-20363

sqlstate:4274D

SQL20364N 语句中序数位置 数字 处名称为 名称 的标识太长。

说明

所描述语句中至少有一个标识太长,以致目标缓冲区不能容纳。由名称 名称 和序数位置 数字 标识的第一个名称太长。如果执行已编译查询的描述输出,那么序数位置与该查询的选择列表列是相对的。如果执行 CALL 语句的描述输出,那么序数位置与 CALL 解析为的过程的 OUT 或 INOUT 参数是相对的。如果执行 CALL 语句的描述输入,那么序数位置与 CALL 解析为的过程的 IN 或 INOUT 参数是相对的。

列名、参数名、用户定义的类型名称或用户定义的类型模式名太长,或者在进行代码页转换之后变得太长。请注意,在使用 SQLDA 结构时,列名、参数名、用户定义的类型名称和用户定义的类型模式名的长度存在限制。

用户响应

请执行下列其中一项操作:
  1. 使用其代码页不会导致扩展时超过受支持的最大长度的客户机。
  2. 对于列名,请更改表、视图或昵称以使列名较短。
  3. 对于参数名,请更改过程以使参数名较短。
  4. 对于用户定义的类型名称或用户定义的类型模式名,请删除并重新创建一个具有较短名称的用户定义类型。
  5. 对于模式名,请更改表、视图、过程或用户定义的类型。

sqlcode:-20364

sqlstate:42622

SQL20365W 在涉及 DECFLOAT 的算术运算或函数中遇到了 Signaling NaN

说明

在涉及 DECFLOAT 列或值的表达式、算术运算或函数中遇到了 Signaling NaN(sNaN)。结果为 NaN

用户响应

要阻止警告被返回,请找到包含 Signaling NaN 的元组,然后将其从查询中排除。

sqlcode:+20365

sqlstate:01565

SQL20371W 对语句中指定的某些授权标识(但不是所有授权标识)取消了使用可信上下文 上下文名称 的能力。

说明

上下文名称 的 ALTER TRUSTED CONTEXT 语句中包含一个具有多个授权标识或 PUBLIC 的 DROP USE FOR 子句,但是并未定义一个或多个授权标识来使用该可信上下文。从可信上下文的定义中除去了一个或多个用户,但是先前未允许一个或多个其他用户使用该可信上下文。

已处理该语句。

用户响应

请验证是否已从所有预期的授权标识中除去使用可信上下文的能力。

sqlcode:+20371

sqlstate:01682

SQL20372N 可信上下文 上下文名称 指定了授权标识 权限名称,但是先前已经为另一个可信上下文指定了该授权标识。

说明

上下文名称 的 CREATE TRUSTED CONTEXT 或 ALTER TRUSTED CONTEXT 语句指定了 SYSTEM AUTHID 权限名称,但是此授权标识已被定义为使用另一个可信上下文。定义为一个可信上下文的 SYSTEM AUTHID 的系统授权标识不能作为任何其他可信上下文的 SYSTEM AUTHID。

使用以下查询来确定哪个可信上下文已经在使用该授权标识:

SELECT CONTEXTNAME FROM SYSCAT.CONTEXTS 
WHERE SYSTEMAUTHID = <authorization-name>

未能处理该语句。

用户响应

将该授权标识更改为可信上下文的系统授权标识,然后重新发出 CREATE 或 ALTER 语句。

sqlcode:-20372

sqlstate:428GL

SQL20373N CREATE TRUSTED CONTEXT 或 ALTER TRUSTED CONTEXT 语句多次指定了 权限名称,或者可信上下文已被定义为供此授权标识或 PUBLIC 使用。

说明

该语句指定允许 权限名称 使用可信上下文,但是指定的授权标识或 PUBLIC 已被定义为使用可信上下文,或者在该语句中多次指定了该授权标识。授权标识或 PUBLIC 一定不能已经被允许使用可信上下文,并且在可信上下文的语句中只能指定该授权标识或 PUBLIC 一次。

未能处理该语句。

用户响应

如果多次指定了该授权标识或 PUBLIC,那么除去所指定的多余 权限名称,然后重新发出该语句。如果 ALTER TRUSTED CONTEXT 语句中包含一个 ADD USE FOR 子句,并且可信上下文已经被定义为供该授权标识或 PUBLIC 使用,那么使用 REPLACE USE FOR 子句将指定用户的使用特征重新定义为使用可信上下文。

sqlcode:-20373

sqlstate:428GM

SQL20374N 上下文名称 的 ALTER TRUSTED CONTEXT 语句指定了 权限名称,但是当前未将可信上下文定义为供此授权标识或 PUBLIC 使用。

说明

上下文名称 的 ALTER TRUSTED CONTEXT 语句尝试替换或除去 权限名称 使用可信上下文的能力,但是指定的授权标识或 PUBLIC 当前未被定义为使用可信上下文。

未能处理该语句。

用户响应

如果 ALTER TRUSTED CONTEXT 语句中包含一个 REPLACE USE FOR 子句,而可信上下文尚未被定义为供该授权标识或 PUBLIC 使用,那么使用 ADD USE FOR 子句来将可信上下文定义为供指定用户使用。如果 ALTER TRUSTED CONTEXT 语句中包含 DROP USE FOR 子句,那么当前未将已指定的任何授权标识或 PUBLIC 定义为使用可信上下文。

sqlcode:-20374

sqlstate:428GN

SQL20377N 在以字符串 起始字符串 开头的 SQL/XML 表达式或函数自变量中找到了非法 XML 字符 十六进制字符

说明

SQL/XML 表达式或函数尝试将其中一个自变量中的 SQL 字符串值转换为 XML 字符串,但是该字符串在 Unicode 代码点 十六进制字符 中包括一个不是合法 XML 1.0 字符的字符。该字符包括在一个以字符串 起始字符串 开头的字符串中。十六进制字符 的值将该非法字符表示为一个格式为“#xH”的 Unicode 代码点,其中 H 是一个或多个十六进制字符。允许使用下面这一组 Unicode 字符(它们是使用正则表达式定义的): #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]。下面是可能会产生此错误的 SQL/XML 表达式或函数的一些示例:XMLCAST、XMLELEMENT、XMLFOREST、 XMLAGG、XMLDOCUMENT、XMLTEXT、 XMLATTRIBUTES、XMLQUERY 或 XMLTABLE。

无法处理该语句。

用户响应

除去非法字符 十六进制字符,或者将它替换为一个允许使用的字符。

sqlcode:-20377

sqlstate:0N002

SQL20379N 授权标识不能使用它的 SECADM 权限来将对象的所有权转移给它自己。

说明

拥有 SECADM 权限的授权标识无法将它尚未拥有的对象的所有权转移给它自己。但是,它可以将该对象的所有权转移给另一个授权标识。

无法处理该语句。

用户响应

选择另一个授权标识作为该对象的新所有者。

sqlcode:-20379

sqlstate:42502

SQL20383W 遇到了错误,并且已按 RETURN DATA UNTIL 子句指定那样容许该错误。

说明

至少遇到了一个错误,并且已按 RETURN DATA UNTIL 子句指定那样容许该错误,并继续执行查询。查询结果可能与未发生错误的情况下的查询结果不同。

用户响应

您应知道查询结果可能不完整。如果可能,检查已容许的错误的来源,并更改该错误。

sqlcode:+20383

sqlstate:02506

SQL20384W 不支持指定的语言环境。返回的消息使用的是英语语言环境。

说明

数据库管理器不支持指定的语言环境。

用户响应

请参阅 Administration Guide: Planning for the "Supported code pages and territories" 或 DB2 信息中心以了解受支持的服务器语言和相应的语言环境值。

sqlcode:+20384

sqlstate:01684

SQL20386N 无法在 DECLARE CURSOR 语句中指定 XQuery 表达式。

说明

DECLARE CURSOR 语句不允许紧接着 FOR 关键字后面指定 XQuery 表达式。XQuery 表达式只能与使用预编译语句名称的游标相关联。

用户响应

从 DECLARE CURSOR 语句中除去 XQuery 表达式,并将它替换为一条语句名称。通过使用同一语句名称发出 PREPARE 语句来准备 XQuery 表达式。

sqlcode:-20386

sqlstate:42637

SQL20387N 对安全标号组件 组件名 指定了两个或更多个元素。

说明

对于类型为 ARRAY 的组件,安全标号不能包含多个元素。

用户响应

仅对安全标号组件 组件名 指定一个元素。

sqlcode:-20387

sqlstate:428GP

SQL20388N 对安全标号组件 组件名 指定了太多的元素。

说明

类型为 SET 或 TREE 的安全标号组件不能具有 64 个以上的元素。对安全标号组件 组件名 指定的元素数超过了此数目。

对于类型为 ARRAY 的安全标号组件,最大元素数为 65535。如果是通过 ALTER SECURITY LABEL COMPONENT 语句添加元素的,那么由于 DB2 将为每个新元素指定一个编码值,因此,实际限制可能小于此最大值。

用户响应

对于 TREE 和 SET 安全标号组件,除去一些元素以使元素数目不超过 64。对于 ARRAY 安全组件,如果尚未达到最大值,那么删除组件,然后使用指定的所有期望元素再次创建该组件。

sqlcode:-20388

sqlstate:54061

SQL20389N 在安全标号组件 组件名 中未定义组件元素 元素

说明

安全标号组件 组件名 的定义中不存在组件元素 元素

用户响应

为该组件提供有效的元素。可以提交以下查询以列示安全标号组件的有效元素:

SELECT ELEMENTVALUE FROM SYSCAT.SECLABELCOMPONENTELEMENTS
  WHERE COMPID=(SELECT COMPID FROM 
    SYSCAT.SECLABELCOMPONENTS 
    WHERE  COMPNAME = component-name)

如果在执行标量函数 SECLABEL 时发生此错误,那么还需检查安全标号字符串以确保值的列示顺序与它们的组件在安全策略中的列示顺序相同。

sqlcode:-20389

sqlstate:4274F

SQL20390N 在安全策略 安全策略 中未定义安全标号组件 组件名,因此不能在安全标号 安全标号 中使用该组件。

说明

安全标号只能包含该标号所属安全策略中定义的那些组件的值。安全策略 安全策略 未包含安全标号组件 组件名。由于该安全策略包含安全标号 安全标号,因此无法在该安全标号中使用组件 组件名

用户响应

提供安全策略 安全策略 所包含的安全标号组件。可以执行以下查询以列示安全策略所包含的安全标号组件:

SELECT COMPNAME FROM 
  SYSCAT.SECURITYLABELCOMPONENTS
  WHERE COMPID=(SELECT COMPID FROM 
    SYSCAT.SECURITYPOLICYCOMPONENTRULES
    WHERE SECPOLICYID = (SELECT SECPOLICYID FROM 
      SYSCAT.SECURITYPOLICIES 
      WHERE SECPOLICYNAME =
        '<security-policy>') )

sqlcode:-20390

sqlstate:4274G

SQL20391N 无法将基于标号的访问控制应用于列 列名,因为没有与表相关联的安全策略。

说明

要使用带有列 列名 的 SECURED WITH 子句,或者要使用数据类型 DB2SECURITYLABEL 来定义该列,必须要有安全策略与该表相关联。

用户响应

使用 CREATE TABLE 语句的 SECURITY POLICY 子句或者使用 ALTER TABLE 语句的 ADD SECURITY POLICY 子句将安全策略添加至表中。

sqlcode:-20391

sqlstate:55064

SQL20392N 已有安全策略。

说明

一个表最多只能有一种安全策略。一旦使安全策略与一个表相关联,就不能更改该表的安全策略。

用户响应

不要尝试为该表指定另一种安全策略。

sqlcode:-20392

sqlstate:55065

SQL20393N 已经超过了安全策略 安全策略 中的最大组件数。

说明

一种安全策略最多可以具有 16 个组件。

用户响应

减少为安全策略 安全策略 指定的组件数。

sqlcode:-20393

sqlstate:54062

SQL20394N 在安全策略 策略名 使用的规则集中没有访问规则 访问规则

说明

安全策略 策略名 使用的 LBAC 规则集未包含 GRANT EXEMPTION 或 REVOKE EXEMPTION 语句中指定的访问规则 访问规则

用户响应

所指定安全策略使用的规则集未包含指定的访问规则。

sqlcode:-20394

sqlstate:4274H

SQL20395N 安全标号 security-label1 的授权与也授予授权标识 authorization-name 的安全标号 security-label2 发生冲突。

说明

如果向用户、组或角色授予两个不同的标号,一个用于 WRITE 访问,另一个用于 READ 访问,那么它们必须满足下列规则:
  1. 对于类型为 ARRAY 的安全标号组件,值在这两个安全标号中必须相同。
  2. 对于类型为 SET 的安全标号组件,在用于 WRITE 访问的安全标号中给定的值,必须是在用于 READ 访问的安全标号中给定的值的子集。
  3. 对于类型为 TREE 的安全标号组件,值必须相同,或者在用于 WRITE 访问的安全标号中给定的值必须是用于 READ 访问的安全标号的一个子树值。

用户响应

授予另一个安全标号,或者对正在授予的安全标号执行下列其中一项修改:
  1. 对于类型为 ARRAY 的安全标号组件,请确保给定的值在这两个安全标号中是相同的。
  2. 对于类型为 SET 的安全标号组件,请确保在用于 WRITE 访问的安全标号中给定的值,是在用于 READ 访问的安全标号中给定的值的子集。
  3. 对于类型为 TREE 的安全标号组件,请确保值相同,或者在用于 WRITE 访问的安全标号中给定的值是用于 READ 访问的安全标号的某个子树值。

sqlcode:-20395

sqlstate:428GQ

SQL20396N 对于安全策略 策略名,找不到名为 安全标号名 的安全标号。

说明

对于安全策略 策略名,找不到名为 安全标号名 的安全标号。这已导致执行内置函数 SECLABEL_BY_NAME 时失败。

用户响应

检查 安全标号名 的拼写是否正确。确保您使用的是正确的安全策略名称。

sqlcode:-20396

sqlstate:4274I

SQL20397W 例程 例程名 的执行已完成,但是执行期间至少遇到了一个错误 错误代码。提供了更多信息。

说明

例程 例程名 的执行已完成。在内部执行所请求的功能期间至少遇到了一个错误。遇到的最后一个错误是 错误代码。提供了有关遇到的错误的更详细信息。

对于 ADMIN_CMD 例程,已经填充了它的输出参数和结果集(如果有)。

用户响应

检索输出参数和结果集(如果有),以了解有关遇到的错误的更多信息。如果在执行期间生成了消息文件,那么检查它们的内容并解决各种错误情况。如果可能,重新调用该例程。

sqlcode:+20397

sqlstate:01H52

SQL20401N 由于名为 对象名 的 MQT 或登台表依赖于该表,因此安全策略无法保护该表。

说明

因为具体化查询表(MQT)或登台表依赖于该表,所以 LBAC 无法保护该表。

用户响应

如果适当,删除 MQT 或登台表 对象名,然后重新提交该语句。

sqlcode:-20401

sqlstate:55067

SQL20402N 授权标识 授权标识 没有 LBAC 凭证,无法对表 表名 执行 操作名 操作。

说明

不允许授权标识 授权标识 对表 表名 执行操作 操作名。如果用户没有适当的安全标号和/或免除凭证,就不允许该用户在受保护表中插入、更新或删除行,也不允许该用户将该表改变成为受保护表。

用户响应

请数据库安全性管理员将执行插入、更新或删除操作所需的正确安全标号或免除凭证授予授权标识 授权标识。要将该表改变成受保护表,需要授予用于进行 WRITE 访问的安全标号。

sqlcode:-20402

sqlstate:42519

SQL20403N 授权标识 授权标识 已有用于进行 访问类型 访问的安全标号(安全标号)。

说明

每个授权标识最多只能有一个安全标号用于进行 WRITE 访问,也最多只能有一个安全标号用于进行 READ 访问。已经将安全标号 安全标号 授予授权标识 授权标识 以进行 访问类型 访问。

用户响应

如果想要更改用于 访问类型 访问的安全标号,那么必须首先使用 REVOKE SECURITY LABEL 语句从授权标识 授权标识 中撤销安全标号 安全标号

sqlcode:-20403

sqlstate:428GR

SQL20404N 无法删除安全标号对象 策略名.对象名,因为它当前正在使用。原因码:原因码

说明

无法删除安全标号对象 对象名。原因码 原因码 指定了无法删除它的原因:

  1. 已将它授予一个或多个用户、组或角色。
  2. 正在将它用来保护一列或多列。

用户响应

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

  1. 对已为此安全策略授予了此安全标号的所有用户、组或角色撤销此标号。可以使用以下查询来查找已对此标号授予的所有用户。
    SELECT GRANTEE FROM SYSCAT.SECURITYLABELACCESS 
      WHERE SECLABELID = (SELECT SECLABELID FROM 
      SYSCAT.SECURITYLABELS  
      WHERE SECLABELNAME
    = '<object-name>' AND
        SECPOLICYID = (SELECT SECPOLICYID FROM 
        SYSCAT.SECURITYPOLICIES 
      WHERE SECPOLICYNAME = '<policy-name>' ) )
  2. 对于使用此安全标号来保护列的所有表,可以改变表以删除此安全标号,也可以删除表。可以使用以下查询来查找所有受保护的表以及使用此标号保护的所有列。
    SELECT TABNAME, COLNAME FROM SYSCAT.COLUMNS
      WHERE SECLABELNAME
    = '<object-name>' AND
        TABNAME =
    (SELECT TABNAME
    FROM SYSCAT.TABLES
      WHERE SECPOLICYID = (SELECT SECPOLICYID FROM 
      SYSCAT.SECURITYPOLICIES
      WHERE SECPOLICYNAME = '<policy-name>' ) )

sqlcode:-20404

sqlstate:42893

SQL20405N 无法删除安全策略对象 对象名,因为它当前正在使用。原因码:原因码

说明

无法删除安全对象 对象名。原因码 原因码 指定了无法删除它的原因:
  1. 正在将它用来保护一个或多个表。
  2. 有一个或多个安全标号使用该安全对象。
  3. 对它的一个或多个规则授予了一个或多个免除凭证。

用户响应

与原因码对应的用户响应是:
  1. 使用 ALTER TABLE 语句删除对表进行保护的安全策略。可以使用以下查询来查找受此安全策略保护的所有表:
    SELECT TABNAME FROM SYSCAT.TABLES  
      WHERE SECPOLICYID=(SELECT SECPOLICYID FROM 
      SYSCAT.SECURITYPOLICIES 
      WHERE SECPOLICYNAME = '<object-name>' )
  2. 删除作为此安全策略的一部分的所有安全标号。可以使用以下查询来查找属于此安全策略的所有安全标号:
    SELECT SECLABELNAME FROM SYSCAT.SECURITYLABELS  
      WHERE SECPOLICYID=(SELECT SECPOLICYID FROM 
      SYSCAT.SECURITYPOLICIES 
      WHERE SECPOLICYNAME = '<object-name>' )
  3. 撤销所有用户拥有的对此安全策略使用的规则授予的所有免除凭证。可使用以下查询来查找已被授予对此安全策略使用的规则的免除凭证的用户。
    SELECT GRANTEE, ACCESSRULENAME FROM
      SYSCAT.SECURITYPOLICYEXEMPTIONS
      WHERE SECPOLICYID=(SELECT SECPOLICYID FROM 
      SYSCAT.SECURITYPOLICIES 
      WHERE SECPOLICYNAME = '<object-name>' )

sqlcode:-20405

sqlstate:42893

SQL20406N 由于安全标号组件对象 对象名 包含在安全策略中,因此无法删除该对象。

说明

由于有一个或多个安全策略引用安全标号组件对象 对象名,因此无法删除该对象。

用户响应

删除引用此安全组件的所有安全策略。可以使用以下查询来查找引用此安全组件的所有安全策略:
SELECT SECPOLICYNAME FROM SYSCAT.SECURITYPOLICIES
  WHERE SECPOLICYID = (SELECT SECPOLICYID FROM 
  SYSCAT.SECURITYPOLICYCOMPONENTRULES
  WHERE COMPID=(SELECT COMPID FROM 
  SYSCAT.SECURITYLABELCOMPONENTS
  WHERE COMPNAME = '<object-name>' ) )

sqlcode:-20406

sqlstate:42893

SQL20408N 无法将表 源表名 连接至表 目标表名,这是因为源表的列 源列名 与它在目标表中的相关列 目标列名 不匹配。原因码:原因码

说明

在 ALTER TABLE ... ATTACH PARTITION 语句中,目标表列的属性与源表中的相应列(按顺序位置排列)的属性不匹配。原因码 指示不匹配的类型以及在 SYSCAT.COLUMNS 视图的哪一列可以找到表属性。

在为了保持兼容性而很难或者不能修改源表或目标表特征的情况下,可以创建与目标表兼容的新表,然后将 源表名 中的数据复制到此新表中。

1

列的数据类型(TYPENAME)不匹配。

2

列的可空性 (NULLS) 不匹配。

3

列的隐式缺省值(IMPLICITVALUE)不兼容。

如果目标表列和源表列都具有隐式缺省值(如果 IMPLICITVALUE 不为 NULL),那么这两个隐式缺省值必须完全匹配。有关如何解释 IMPLICITVALUE 中的值的详细信息,请参阅 SQL Reference Manual。

4

列的代码页(COMPOSITE_CODEPAGE)不匹配。

5

系统压缩缺省子句 (COMPRESS) 不匹配。

6

用于保护源表的 源列名 的安全标号与用于保护目标表的 目标列名 的安全标号不相同。两个表必须有同一组受保护列,并且每一对对应列都必须受同一个安全标号保护。

7

列的行更改时间戳记属性不匹配。

8

对于 XML、LOB 或结构化数据类型,各列的直接插入长度(INLINE LENGTH)不匹配。

9

如果源表的 源列名 的列掩码存在并且已启用,那么目标表的 目标列名 的列掩码也必须存在并且已启用。

10

列的 ROW BEGIN 系统生成的属性不匹配。

11

列的 ROW END 系统生成的属性不匹配。

12

列的 TRANSCATION START ID 系统生成的属性不匹配。

用户响应

更正各个表中存在的不匹配。

1

要更正数据类型的不匹配,可发出以下语句:

ALTER TABLE ... ALTER COLUMN ...
   SET DATA TYPE ...
2

通过发出下列其中一个语句来改变其中一个表中不匹配的列的可空性:

ALTER TABLE... ALTER COLUMN...
DROP NOT NULL ALTER TABLE...
      ALTER COLUMN...
SET NOT NULL
3 和 4

创建一个新的源表。

5

要改变列的系统压缩,发出下面的其中一个语句来更正存在的不匹配:

ALTER TABLE ... ALTER COLUMN ...
   COMPRESS SYSTEM DEFAULT
      ALTER TABLE ... ALTER COLUMN ...
         COMPRESS OFF
6

要改变列的安全性保护,请发出下列其中一个语句:

ALTER TABLE ... ALTER COLUMN ...
   SECURED WITH ... ALTER TABLE ...
      ALTER COLUMN ...
         DROP COLUMN SECURITY
7

将目标表的目标列名定义为 ROW CHANGE TIMESTAMP 列时,源列名也必须定义为 ROW CHANGE TIMESTAMP 列。

8

通过发出以下语句来改变不匹配的列的直接插入长度:

ALTER TABLE ... ALTER COLUMN ...
   SET INLINE LENGTH ...
9

通过发出以下语句对 target-columnname(目标列名)列创建已启用的掩码,然后再次尝试执行 ALTER 操作。

CREATE MASK ON target-table...
    FOR target-columnname... ENABLE
10

将目标表的目标列名定义为 ROW BEGIN 系统生成的列时,源列名也必须定义为 ROW BEGIN 系统生成的列。

11

将目标表的目标列名定义为 ROW END 系统生成的列时,源列名也必须定义为 ROW END 系统生成的列。

12

将目标表的目标列名定义为 TRANSCATION START ID 系统生成的列时,源列名也必须定义为 TRANSCATION START ID 系统生成的列。

sqlcode:-20408

sqlstate:428GE

SQL20409N XML 文档或已构造的 XML 值包含一些 XML 节点的组合,该组合导致超过了内部标识限制。

说明

无法生成必须与一个 XML 值的每个 XML 节点相关联的内部标识,这是因为 XML 节点的级别数与这些级别内的子节点数的组合导致标识溢出。

用户响应

对于文档或者已构造的 XML 值,减少 XML 节点的级别数或者子节点数(尤其是 XML 节点的较深级别)。

sqlcode:-20409

sqlstate:560CG

SQL20410N 在 XML 值中,XML 节点的子节点数超过了 限制数目 个子节点这一限制。

说明

表达式生成了一个 XML 值,在该 XML 值中,XML 节点的子节点数超过了 限制数目 个子节点这一限制。

用户响应

修改表达式,使它生成的 XML 值中的子节点数不超过限制。

sqlcode:-20410

sqlstate:560CH

SQL20412N XML 值串行化会导致字符不能以目标编码来表示。

说明

XML 数据串行化可能需要转换为源 UTF-8 编码之外的编码。如果源编码中存在的字符不能以目标编码来表示,那么在进行代码页转换时将生成替换字符,但在 XML 串行化的结果中不允许使用这些替换字符。

用户响应

请选择一种可以表示 XML 值中的所有字符的目标编码。建议使用 Unicode 编码,因为它们可以表示所有字符。

sqlcode:-20412

sqlstate:2200W

SQL20413N 由于授权标识 授权标识 的 READ 访问权安全标号已被撤销,因此无法执行内置函数 SECLABEL_TO_CHAR。

说明

要执行内置函数 SECLABEL_TO_CHAR,授权标识必须具有 READ 访问权安全标号。已经撤销了授权标识 授权标识 的 READ 访问权安全标号。

用户响应

与数据库安全性管理员或者拥有 SECADM 权限的用户联系,并请求再次授予该安全标号。

sqlcode:-20413

sqlstate:42520

SQL20414N 无法将 权限或特权 权限或特权授予授权标识 授权标识

说明

GRANT 语句尝试将权限或特权授予一个授权名,但不允许该授权名接收该权限或特权。

无法处理该语句。

用户响应

授予另一权限或特权,或者将其授予可以接收该权限或特权的授权标识。

sqlcode:-20414

sqlstate:42521

SQL20415N 由于其中一个底层表受保护,因此对 UNION ALL 视图执行的更新、删除或插入操作失败。

说明

如果 UNION ALL 视图是根据一个或多个受保护表创建的,那么不允许对该视图执行更新、删除和插入操作。

无法处理该语句。

用户响应

不要对 UNION ALL 视图执行更新、删除或插入操作。

sqlcode:-20415

sqlstate:429BZ

SQL20416N 无法将提供的值(安全标号)转换为安全标号。对于策略标识为 策略标识 的安全策略而言,标号的长度应该是 正确长度 个字符。该值的长度是 值长度 个字符。

说明

INSERT 或 UPDATE 语句对类型为 DB2SECURITYLABEL 的列指定了值。由于该值的长度对于保护该表的安全策略所包含的安全标号而言不正确,因此无法将该值转换为有效的安全标号。如果 安全标号 值为 *N,那么表示已将实际值写入 db2diag 日志文件。

用户响应

检查 INSERT 或 UPDATE 语句,确保在安全标号列中设置的值对于用来保护表的安全策略而言有效。有时,在对一个表执行 SELECT,而用于保护该表的安全策略与用于保护目标表的安全策略不同时,可能会生成无效值。只应该在受同一安全策略保护的表之间复制安全标号。要获取给定策略标识的安全策略名,请使用此 SQL 查询。请将策略标识替换为错误消息中给出的策略标识号。

SELECT SECPOLICYNAME FROM SYSCAT.SECURITYPOLICIES
                    WHERE SECPOLICYID = policy-id

sqlcode:-20416

sqlstate:23523

SQL20417W 在未连接到数据源 数据源名 的情况下完成了 SQL 编译。发生了连接错误 错误文本

说明

在 SQL 编译期间,联合服务器未能连接到数据源 数据源名,因此无法确定该数据源支持的功能。已使用缺省设置编译了该 SQL 查询。在运行时,可能会由于在编译时未正确地确定远程服务器的功能而接收到错误。错误文本 包含关于所遇到的连接错误的信息。

用户响应

当该数据源可用时重新编译该语句或再次绑定该包,或者,如果在 SQL 语句中使用了容错嵌套表表达式,那么在编译完成后立即执行该包,以降低在编译与运行时之间发生连接状态更改的机会。如果有必要,请使用 错误文本 中的信息来解决连接到数据源时发生的错误。

sqlcode:+20417

sqlstate:01689

SQL20418N 数据库分区组已被分配给缓冲池。

说明

您正在尝试添加的数据库分区组已被分配给缓冲池。

用户响应

选择另一个数据库分区组,然后再次尝试。

sqlcode:-20418

sqlstate:4274J

SQL20419N 对于表 表名 来说,授权标识 授权标识 没有允许使用安全标号 安全标号名 来保护列 列名 的 LBAC 凭证。

说明

除非用户有允许写受安全标号保护的列的 LBAC 凭证,否则该用户无法使用安全标号来保护该列。授权标识 授权标识 没有允许对安全标号 安全标号名 保护的数据进行写访问的 LBAC 凭证,因此无法使用它来保护表 表名 中的列 列名

用户响应

请数据库安全性管理员将允许对安全标号 安全标号名 保护的列进行写访问的 LBAC 凭证授予授权标识 授权标识

sqlcode:-20419

sqlstate:42522

SQL20420N 对于表 表名 来说,授权标识 授权标识 没有允许从列 列名 中除去安全标号 安全标号名 的 LBAC 凭证。

说明

为了能够删除或替换用于保护列的安全标号,授权标识必须有既允许读取也允许写该列的 LBAC 凭证。授权标识 授权标识 没有既允许读取又允许写受安全标号 安全标号名 保护的列的 LBAC 凭证,因此无法删除或替换该安全标号。

用户响应

请数据库安全性管理员将既允许读取又允许写受安全标号 安全标号名 保护的列的 LBAC 凭证授予授权标识 授权标识

sqlcode:-20420

sqlstate:42522

SQL20421N 表名 未受安全策略保护。

说明

无法从未受安全策略保护的表中删除安全策略。

用户响应

指定受安全策略保护的表。

sqlcode:-20421

sqlstate:428GT

SQL20422N 此语句失败,因为表 表名 将只包含隐藏列。

说明

CREATE TABLE 或 ALTER TABLE 语句尝试创建或改变表 表名,而此表中的所有列都被认为是隐式隐藏的列。在下列情况下可能会出现此状况:

  • CREATE TABLE 语句指定 IMPLICITLY HIDDEN 作为所有列的定义的一部分。
  • ALTER TABLE 语句将所有非隐藏列改变为隐式隐藏列

请更改列定义,以确保它至少包括一个未定义为隐藏的列。

用户响应

请确保表定义至少包含一个未定义为隐式隐藏的列。

sqlcode:-20422

sqlstate:428GU

SQL20423N 服务器名 服务器上使用 索引名 索引进行文本搜索处理期间发生错误。错误消息为 文本搜索错误消息

说明

在处理使用了文本搜索索引 索引名 的文本搜索函数期间发生了 文本搜索错误消息 所描述的错误。

用户响应

使用 文本搜索错误消息 来确定发生错误的原因。如果错误消息被截断,那么您可以在 db2diag 日志文件中查看完整的消息。

文本搜索错误消息 中的第一个词是错误标识。如果该错误标识以“CIE”开头,那么使用 db2ts 命令来获取更多详细信息。例如,db2ts help 错误标识

如果该错误标识不是以“CIE”开头,那么使用 DB2 文本搜索文档来获取有关 文本搜索错误消息 的更多详细信息。

sqlcode:-20423

sqlstate:38H10

SQL20424N 文本搜索支持不可用。原因码:原因码

说明

尝试使用文本搜索时出错。

原因码提供了有关该错误的更多信息:

11

套接字与搜索服务器进行通信失败。

12

执行搜索系统操作期间发生了不可恢复错误。

用户响应

重新启动文本搜索实例服务,然后再次尝试执行该操作。如果仍然发生该错误,请与系统管理员联系,确保在系统上已经安装、正确配置并且已经启动了对文本搜索的支持。

sqlcode:-20424

sqlstate:38H11

SQL20425N 由于表 表名 中的列 列名 指定为文本搜索函数的自变量,但是指定的列不存在活动文本搜索索引,该语句失败。

说明

  1. 文本搜索函数(例如,CONTAINS 或 SCORE)将某列指定为自变量,但是此列并不存在文本搜索索引。
  2. 文本搜索索引处于不活动状态。
  3. 文本搜索索引无效。文本搜索索引可能自动无效,例如,如果删除和重建了底层基本表。
  4. 查询组合不同类型的文本搜索索引。

不能对指定的列执行文本搜索处理。

用户响应

  1. 确保为文本搜索启用了数据库,并且已对指定列创建了文本搜索索引。
  2. 使用 ACTIVATE 选项激活包含 ALTER INDEX 命令的文本索引。
  3. 如果该表列的文本搜索索引无效,请删除该文本索引,然后创建新的文本索引。
  4. 如果查询组合多个文本搜索索引,那么确保所有索引都处于活动状态且类型相同。

sqlcode:-20425

sqlstate:38H12

SQL20426N 正在对同一索引运行互相冲突的文本搜索管理过程或命令。

说明

正在对同一索引运行两个或多个互相冲突的管理过程或命令。

用户响应

在当前正在运行的过程或命令完成之后调用该管理过程或命令。如果先前尝试执行的操作是 DISABLE,那么稍后重试此操作,或者使用该命令的 FORCE 选项。

sqlcode:-20426

sqlstate:38H13

SQL20427N 在执行文本搜索管理过程或命令期间出错。错误消息为 文本搜索错误消息

说明

文本搜索管理操作失败,产生的错误消息为 文本搜索错误消息

用户响应

使用错误消息 文本搜索错误消息 来确定发生错误的原因。如果错误消息被截断,那么您可以查看 db2diag 日志文件。

文本搜索错误消息 中的第一个词是错误标识。如果该错误标识以“CIE”开头,那么使用 db2ts 命令来获取更多详细信息。例如,db2ts help 错误标识

如果该错误标识不是以“CIE”开头,那么使用 DB2 文本搜索文档来获取有关 文本搜索错误消息 的更多详细信息。

sqlcode:-20427

sqlstate:38H14

SQL20428N 在 ACCORDING TO XMLSCHEMA 子句中指定的 URI 为空字符串。

说明

紧随 URI 关键字之后指定的目标名称空间 URI 或者紧随 LOCATION 关键字之后指定的模式位置 URI 为空字符串。

用户响应

请确保 ACCORDING TO XMLSCHEMA 子句中的每个目标名称空间 URI 和每个模式位置 URI 是有效的 URI,而不是空字符串。

sqlcode:-20428

sqlstate:428GV

SQL20429N 不允许对此数据库上非 FOR BIT DATA 的字符串执行 XML 操作 操作名称

说明

由于字符串不是 FOR BIT DATA,因此未能对其执行所指定操作。操作名称 是 XMLPARSE 或另一被禁止的操作。

用户响应

数据库配置参数 ENABLE_XMLCHAR 已设置为 NO。要允许对非 FOR BIT DATA 的字符串执行 XMLPARSE 操作,请将 ENABLE_XMLCHAR 设置为 YES。请注意,如果数据库不是 Unicode 格式并且要解析的 XML 值包含一些数据库代码页中不存在的字符,那么可能会进行字符替换。

另外,还可以对该语句进行重新处理以使用 XML 类型的主变量、表达式或参数标记。

sqlcode:-20429

sqlstate:428GW

SQL20430N 不能在此上下文中设置或引用全局变量 变量名

说明

在某些上下文中,无法设置全局变量;而在其他上下文中无法引用全局变量。在下列情况下可能返回此消息:

  • 语句尝试在下列其中一个上下文中设置指定的全局变量:
    • 复合 SQL(直接插入)语句
    • 主体不是复合 SQL(编译型)语句的函数
    • 方法
    • 主体不是复合 SQL(编译型)语句的触发器
  • 正在一个定义为 AUTONOMOUS 的过程中引用一个全局变量

无法处理该语句。

用户响应

请除去该全局变量的不受支持的设置或引用。

sqlcode:-20430

sqlstate:428GX

SQL20431N 无法对表标志符返回 ROW CHANGE TIMESTAMP FOR 表标志符

说明

ROW CHANGE TIMESTAMP FOR 表标志符 表达式对未包含定义为行更改时间戳记列的列的表无效。

无法处理该语句。

用户响应

请从语句中除去 ROW CHANGE TIMESTAMP FOR 表达式,或改变表并添加 ROW CHANGE TIMESTAMP 列。

sqlcode:-20431

sqlstate:55068

SQL20432N 原始 XML 模式包含 外层模式组件 所包含或引用的 模式组件,但后者与更新的 XML 模式不兼容。导致不兼容的原因是:原因码原因字符串)。

说明

指定为对另一现有 XML 模式进行更新的 XML 模式不符合兼容 XML 模式更新的条件。原始 XML 模式包含元素或属性 外层模式组件 所包含或引用的元素、属性或类型 模式组件,但后者与更新的 XML 模式不兼容。原因码原因字符串)给出了导致不兼容的具体原因。

1(属性内容)

在复杂类型中声明或引用的属性已除去,或者某些必需属性已添加为内容模型的一部分。模式组件 的值是原始 XML 模式中外层复杂类型的名称,而 外层模式组件 的值是引用该复杂类型的元素的名称。对于匿名复杂类型的情况,模式组件 的值为空。

2(元素内容)

在复杂类型中声明或引用的元素已除去,或者某些必需元素已添加为内容模型的一部分。模式组件 的值是原始 XML 模式中外层复杂类型的名称,而 外层模式组件 的值是引用该复杂类型的元素的名称。对于匿名复杂类型的情况,模式组件 的值为空。

3(刻面冲突)

简单类型的刻面值已更改,以致与该简单类型的值范围不兼容。模式组件 的值是原始 XML 模式中定义此刻面的简单类型的名称,而 外层模式组件 的值是引用该简单类型的元素或属性的名称。对于匿名简单类型的情况,模式组件 的值为空。

4(不兼容的类型)

元素或属性的类型已更改,以致实例文档验证失败,或者由于简单类型注释更改而不兼容。模式组件 的值是原始 XML 模式中类型的名称,而 外层模式组件 的值是引用该类型的元素或属性的名称。对于匿名类型的情况,模式组件 的值为空。

5(混合入非混合内容)

原始 XML 模式中声明为混合的某种复杂类型的内容模型在更新的 XML 模式中已更改为非混合内容。模式组件 的值是原始 XML 模式中复杂类型的名称,而 外层模式组件 的值是引用该复杂类型的元素的名称。对于匿名复杂类型的情况,模式组件 的值为空。

6(可空至非可空)

在原始 XML 模式中打开了元素声明中的可空属性,但可空属性在更新的 XML 模式中被关闭。模式组件 的值是原始 XML 模式中元素的名称,而 外层模式组件 的值为空。

7(除去的元素)

模式组件 中声明的全局元素已从更新的 XML 模式中除去或设为抽象类型。外层模式组件 的值为空。

8(除去的类型)

原始 XML 模式在 模式组件 中包含了一种派生自另一类型的全局类型,但该全局类型已从更新的 XML 模式中除去。外层模式组件 的值为空。

9(简单至复杂)

在原始 XML 模式中包含简单内容的复杂类型不能重定义为在更新的 XML 模式中包含复杂内容。模式组件 的值是原始 XML 模式中复杂类型的名称,而 外层模式组件 的值是引用该复杂类型的元素的名称。对于匿名复杂类型的情况,模式组件 的值为空。

10(简单内容)

在原始 XML 模式和更新的 XML 模式中定义的简单类型具有不同的基本类型。模式组件 的值是原始 XML 模式中简单类型的名称,而 外层模式组件 的值是引用该简单类型的元素或属性的名称。对于匿名简单类型的情况,模式组件 的值为空。

用户响应

请将提供的解释与 原因码原因字符串)相比较,然后确定导致不兼容的原因。接下来,更正问题,然后重新提交该命令以更新 XML 模式。

sqlcode:-20432

sqlstate:22538

SQL20435N SELECT 子句包括 ARRAY_AGG 函数,并且同一 SELECT 子句中 ARRAY_AGG、LISTAGG、XMLAGG 和 XMLGROUP 函数的所有调用未遵循同一顺序。

说明

SELECT 子句包括 ARRAY_AGG 并且存在下列其中一种情况:

  • ARRAY_AGG 函数调用包括 ORDER BY 子句,并且指定排序键不同于同一 SELECT 子句中 ARRAY_AGG、LISTAGG、XMLAGG 或 XMLGROUP 函数调用的至少一个实例的排序键。
  • ARRAY_AGG 函数调用不包括 ORDER BY 子句,并且指定排序键对于同一 SELECT 子句中的 ARRAY_AGG、LISTAGG、XMLAGG 或 XMLGROUP 函数的所有调用不相同。

用户响应

请更改这些排序键以使其完全相同,或者只保留一个函数调用中对排序键的指定而将其余除去。

sqlcode:-20435

sqlstate:428GZ

SQL20436N 为数组指定的数据类型无效。

说明

在 CREATE TYPE 语句或 CREATE HADOOP TABLE 语句中对包含以下内容的数组指定的数据类型无效:类型为数组的列、数组构造函数、UNNEST 的自变量、ARRAY_AGG 的自变量或 ARRAY_AGG 的目标。在指定数据类型时,下列限制适用。

  • 下列数据类型不受支持:
    • LONG VARCHAR
    • LONG VARGRAPHIC
    • REFERENCE
    • XML
    • BOOLEAN(在 V9.7.5 之前)
    • 除行数据类型和数组数据类型之外的用户定义的数据类型
  • 关联数组的数组下标数据类型必须是 INTEGER 或 VARCHAR。
  • 对于 Hadoop 表,唯一受支持的嵌套是行数组。
  • UNNEST 的自变量不能是嵌套数组。
  • ARRAY_AGG 的自变量以及 ARRAY_AGG 的目标不能是嵌套的数组。
  • ARRAY_AGG 的目标不能是嵌套的数组。
  • ARRAY 类型或 ROW 类型可以作为元素嵌套到其他 ARRAY 类型中,但不能超出最大嵌套级别。

用户响应

确保 CREATE TYPE (array) 语句或 CREATE HADOOP TABLE 语句中对类型为数组的列、数组构造函数、UNNEST 的自变量、ARRAY_AGG 的自变量或 ARRAY_AGG 的目标指定的数据类型受支持。

sqlcode:-20436

sqlstate:429C2

SQL20437N 不能对数据类型不是 ARRAY 的对象应用数组下标操作。

说明

不能对类型不是 ARRAY 的对象应用格式为“对象[数组下标]”的数组下标操作。

用户响应

请将变量或参数更改为数组类型。

sqlcode:-20437

sqlstate:428H0

SQL20438N 数组下标表达式的数据类型不可赋予数组下标类型。

说明

如果该对象是常规数组,那么在格式为“对象[数组下标]”的表达式中,数组下标表达式的类型必须可赋予 INTEGER。如果该对象是关联数组,那么数组下标表达式的类型必须可赋予数组下标的数据类型(INTEGER 或 VARCHAR)。

用户响应

请将数组下标表达式的数据类型更改为其中一种受支持的数据类型。

sqlcode:-20438

sqlstate:428H1

SQL20439N 值为 的数组下标超出范围或者不存在。

说明

所指定数组元素或者 TRIM_ARRAY 的第二个自变量的数组下标值超出范围或者为空值。如果在关联数组的所指定数组元素中指定数组下标,并且该下标对于数组下标数据类型而言有效,那么表明该数组中不存在数组下标值为 的元素。

用户响应

对于关联数组:

  • 指定非空值。
  • 如果数组下标数据类型是整型,请指定整型范围内的数值。
  • 指定该数组中存在的数组下标值。

对于常规数组:

  • 如果该值是在作为赋值语句目标的所指定数组元素中使用的数组下标,请将其更改为非空值(大于或等于 1 并且小于或等于对该数组定义的最大基数)。
  • 如果该值是在作为表达式组成部分的所指定数组元素中使用的数组下标,或者该值是 TRIM_ARRAY 函数的第二个自变量,请将其更改为大于或等于 0 并且小于或等于该数组的基数。

sqlcode:-20439

sqlstate:2202E

SQL20440N 基数为 基数 的数组值太长。允许的最大基数是 最大基数

说明

该数组值需要将其基数 基数 截断为最大基数 最大基数。已调用系统(内置)强制类型转换函数或调整函数以某种方式转换此值。在使用此值的位置不允许截断。

要转换的数组值是下列其中一项:

  • 存储过程调用自变量
  • ARRAY_AGG 函数调用的结果
  • 在 SET 语句右边使用的数组构造函数的结果
  • 强制类型转换函数的自变量

用户响应

请检查 SQL 语句以确定将进行变换的位置。变换的输入太长或目标太短。显式地减小输入的基数,或者增大目标可以支持的基数。

sqlcode:-20440

sqlstate:2202F

SQL20441N 类型名 数据类型在使用它的上下文中不受支持。

说明

可以在多个上下文中指定该数据类型,其中包括下列各项。

  • SQL 函数的参数:
    • 在模块中定义
    • 将复合 SQL(编译型)语句作为并非定义于模块中的函数体
  • SQL 函数的返回类型:
    • 在模块中定义
    • 将复合 SQL(编译型)语句作为并非定义于模块中的函数体
  • SQL 过程的参数
  • SQL 函数中声明的局部变量:
    • 在模块中定义
    • 将复合 SQL(编译型)语句作为并非定义于模块中的函数体
  • SQL 过程中声明的局部变量
  • 在将复合编译型 SQL 语句作为触发器主体的触发器中声明的局部变量
  • 复合编译型 SQL 语句中 SQL 语句中的表达式
  • 全局变量

下面是一些无效上下文的列表:

  • 外部例程中的参数或变量
  • 函数体定义由复合 SQL(直接插入型)语句定义的函数的返回类型
  • 表中的列
  • SQL PL 上下文外部的 SQL 语句中的数据类型
  • 在 SQL PL 上下文外部引用的全局变量(包括模块变量)。
  • 正在从 SQL PL 上下文外部调用的过程或函数的输入或输出参数
  • 在分区数据库环境 (DPF) 或对称多处理器 (SMP) 环境中,只有顶级 SET 和 CALL 语句可以引用嵌套类型中定义的对象。子查询无法引用具有嵌套类型的对象。
  • 在自主例程中具有全局变量、模块变量或 PL/SQL 程序包变量的嵌套类型。

用户响应

请参阅文档,以便了解受支持上下文的最新列表以及有关此数据类型的用法的限制。除去在不受支持的上下文中使用的任何数据类型。

如果正在从命令界面执行的例程引用中引用数据类型,请从 SQL PL 上下文中调用该例程,或者提供所指定数据类型的全局变量作为例程自变量。

sqlcode:-20441

sqlstate:428H2

SQL20442N 没有足够的存储空间来表示该数组值。

说明

用于表示数组值所需要的内存大小大于系统所允许的最大值。

用户响应

可以采用的解决方案包括:
  • 更正尝试创建数组值的语句
  • 减少数组中元素的数目或减小其中某些元素的大小
  • 如果 APPLHEAPSZ 或 APPL_MEMORY 未设置为 AUTOMATIC,那么增大其值
  • 增大可供系统使用的物理内存大小

sqlcode:-20442

sqlstate:57011

SQL20443N 属性 属性名称 的值不能超过 长度

说明

对可信上下文或工作负载定义指定的属性太长。指定了属性 属性名称,但该值超过了 长度 这一最大长度。

用户响应

指定长度不超过 长度 的有效值。

sqlcode:-20443

sqlstate:42907

SQL20445N 根据指定,安全标号名称 名称 无效。

说明

在指定该安全标号名称所在的上下文中,该名称必须使用现有安全策略名称进行显式限定。

用户响应

请提供一个使用现有安全策略名称进行显式限定的安全标号名称。

sqlcode:-20445

sqlstate:42704

SQL20447N 格式字符串 格式字符串 对于 函数名 函数无效。

说明

给定的格式字符串 格式字符串 对于名为 函数名 的函数无效。

作为 函数名 标识的函数可以是 VARCHAR_FORMAT 或 TIMESTAMP_FORMAT,即使用于调用该函数的名称是 TO_CHAR、TO_DATE 或 TO_TIMESTAMP 亦如此。

当格式字符串自变量存在下列其中一个问题时,将返回此消息:

  1. 包含不受支持的格式元素。
  2. 该格式未包含格式元素、是空字符串或者只包含空白。
  3. 某个格式元素被多次指定。
  4. 格式字符串自变量的长度超出允许的最大长度。
  5. 包含不受支持的分隔符。
  6. 格式元素过多。
  7. 在字符串中的错误位置指定了前缀或后缀格式元素。
  8. 包含多个代表同一个组件的格式元素。例如,不能在格式字符串中同时指定 TIMESTAMP_FORMAT 函数 YYYY 和 YY(用于指示 YEAR 的格式元素)。

无法处理该语句。

用户响应

更改格式字符串自变量并再次调用 函数名 函数。

sqlcode:-20447

sqlstate:22007

SQL20448N 通过对 TIMESTAMP_FORMAT 函数使用格式字符串 格式字符串 不能解释 字符串表达式

说明

使用 字符串表达式格式字符串 调用了 TIMESTAMP_FORMAT 函数。用来调用该函数的名称还可以为 TO_DATE 或 TO_TIMESTAMP。不能使用格式字符串 格式字符串 来解释值 字符串表达式 以生成时间戳记值。下列任何一种原因都会导致发生此错误:
  • 对于指定的格式字符串来说,字符串表达式 太短
  • 对于指定的格式字符串来说,字符串表达式 太长
  • 字符串表达式 不符合在格式字符串中所指定的模板。例如:
    • 字符串表达式 中指定的位数对于格式字符串中相应格式元素来说太多,例如以下特定情况,92007 对于 YYYY 来说是无效值
    • 字符串表达式 中的值对于格式字符串中相应格式元素无效,例如以下特定情况,45 对于 DD 来说是无效值

无法处理该语句。

用户响应

更改 TIMESTAMP_FORMAT 函数的格式字符串自变量。有关更多信息,请参阅 SQL Reference 中的 TIMESTAMP_FORMAT 函数。

sqlcode:-20448

sqlstate:22007

SQL20449N 指定的树元素 元素值 无效。

说明

树元素 元素值 是树中的一个现有元素,但是在语句中指定该树元素无效。必须维护树组件的树结构。

例如,在 ALTER SECURITY LABEL COMPONENT 语句中,在 ADD ELEMENT 子句的 OVER 子句中指定的 元素名称 不是在 UNDER 关键字之后立即指定的树元素的直系子元素。

用户响应

指定一个将保持树结构的有效树元素。例如,仅指定是在 UNDER 关键字之后立即指定的树元素的直系子元素的现有树元素。

sqlcode:-20449

sqlstate:428H3

SQL20450N 在分层查询中超过了递归限制。

说明

使用 CONNECT BY 子句的分层查询的递归深度仅限于 64 层。但是查询已经超过了此层数。

用户响应

验证 START WITH 和 CONNECT BY 子句是否正确。如果期望递归深度超过 64 层,那么使用递归公共表表达式来改写查询。递归公共表表达式支持任意递归深度。

sqlcode:-20450

sqlstate:54066

SQL20451N 在分层查询中检测到了循环。

说明

使用 CONNECT BY 子句的分层查询已经发现某一行是它本身的直接或间接父代,给定 CONNECT BY 搜索条件。

无法处理该语句。

用户响应

验证 CONNECT BY 子句是否正确,要特别注意 PRIOR 运算符。
  • 如果期望不存在循环,那么根据 CONNECT BY 子句中指定的搜索条件来验证 FROM 子句提供的结果表中是否确实包含循环数据。
  • 如果期望存在循环,那么将 NOCYCLE 关键字添加至 CONNECT BY 子句。例如:
        SELECT PK FROM T START WITH PK = 5 
        CONNECT BY NOCYCLE PRIOR PK = FK
    

sqlcode:-20451

sqlstate:560CO

SQL20452N 在上下文外部使用了分层查询构造 名称

说明

在分层查询上下文外部找到了下列构造之一:
  • LEVEL 伪列
  • PRIOR 或 CONNECT_BY_ROOT 一元运算符
  • SYS_CONNECT_BY_PATH() 函数
  • ORDER SIBLINGS BY 子句
原因是下列其中之一:
  • 在指定了 名称 的子查询中,不存在 CONNECT BY 子句。注意,名称 不能是相关的。
  • 已经指定了 ORDER SIBLINGS BY,但是存在 DISTINCT、GROUP BY 或 HAVING 子句,它们已经破坏了由分层查询提供的部分顺序
  • 名称 的其中一个自变量是一个聚集函数或 OLAP 函数
  • 名称 本身是分层查询构造的一个自变量
  • 已经在 CONNECT BY 子句的上下文外部指定了 PRIOR
  • 已经在 WHERE 子句的隐式连接谓词中指定了 名称
  • 已经在 START WITH 子句中指定了 名称

无法处理该语句。

用户响应

  • 如果不打算进行分层查询并且 名称 为 LEVEL,那么验证是否确实存在与 名称 相匹配的列或变量并且可以在查询中解析这些列或变量。只有在常用标识解析失败之后才认为这些标识是伪列。
  • 验证在包含 名称 的子查询中是否存在 CONNECT BY 子句
  • 将聚集函数与分层查询进行组合时,考虑将 名称 用作该聚集函数的自变量,但是不能执行反向操作。例如,使用 MAX(CONNECT_BY_ROOT name) 而不使用 CONNECT_BY_ROOT MAX(name)
  • 从查询中除去 名称

sqlcode:-20452

sqlstate:428H4

SQL20453N 无法除去任务 任务名,因为当前正在执行该任务。

说明

尝试除去任务 任务名 失败,因为当前正在执行该任务。

用户响应

一直等到该任务完成,然后才使用 SYSPROC.ADMIN_TASK_REMOVE 过程来除去该任务。可以使用 SYSTOOLS.ADMIN_TASK_STATUS 视图来检查该任务的执行状态。

sqlcode:-20453

sqlstate:5UA01

SQL20454N 无效使用了外连接运算符。原因码:原因码

说明

在 SQL 语句中不正确地使用了外连接运算符(指定为“(+)”)。原因码 原因码 给定了无效使用的含义。
1
在 FROM 子句中使用 JOIN 语法的子查询中使用了外连接运算符。
2
在具有对另一个子查询的相关引用的 AND 因子中使用了外连接运算符。
3
在 AND 因子中的多个表引用的列中使用了外连接运算符。
4
在引用了两个以上的表引用中的列的 AND 因子中使用了外连接运算符。
5
在对于 AND 因子中的 NULL 生产者的某些列引用中缺少外连接运算符。
6
在 AND 因子中指定了外连接运算符,但是列引用只来自于一个表引用,并且其他执行外连接的 AND 因子都不使用同一 NULL 生产者表引用。
7
将同一表引用用作多个外连接中的 NULL 生产者。
8
将同一表引用用作组成一个循环的多个独立外连接中的 NULL 生产者和外部表。
9
外连接运算符与一个不是列名的标识配合使用。该标识可能是全局变量、局部变量、转换变量或参数名。

无法处理该语句。

用户响应

将使用外连接运算符更改为在 FROM 子句中使用显式 OUTER JOIN 语法。或者,根据原因码来更正或除去无效使用的外连接运算符。

sqlcode:-20454

sqlstate:428H5

SQL20456N 插入或更新多行失败,因为不能对定义为 ROW CHANGE TIMESTAMP 和 GENERATED BY DEFAULT 的列同时指定 DEFAULT 和显式值。

说明

对多个数据行执行的插入或更新操作尝试按如下所示来插入或更新行:对于同时使用 ROW CHANGE TIMESTAMP 属性和 GENERATED BY DEFAULT 属性定义的一列,对其中的某些行指定 DEFAULT,而对某些行指定显式值。

用户响应

修改语句,以便只为该列中的所有行指定 DEFAULT,或者为该列中的所有行提供显式值。或者,使用两个语句来完成此操作:一个语句用来将列值设置为 DEFAULT,另一个语句用来将列值设置为显式提供的值。

sqlcode:-20456

sqlstate:560CP

SQL20457N 对于参数 编号,过程 过程名称 遇到了不受支持的版本 版本

说明

过程 过程名称 不支持为处于正确位置 编号 的参数指定的版本 版本

用户响应

调用此过程,并为此参数指定一个受支持的版本号。通过调用此过程并将此参数的值指定为 NULL,就可以获得此参数支持的最高版本号。

sqlcode:-20457

sqlstate:38554

SQL20458W 过程 过程名称 在参数 编号-1 中遇到了内部参数处理错误。参数 编号-2 的值包含有关此错误的更多信息。

说明

在调用过程 过程名称 时,位于正确位置 编号-1 的参数的格式或内容无效。在正确位置 编号-2 指定的输出参数包含有关如何对错误作出响应的信息。

用户响应

使用在正确位置 编号-2 指定的输出参数中的信息来更正参数值的格式或内容,然后再次调用此过程。

sqlcode:+20458

sqlstate:01H54

SQL20459W 过程 过程名称 遇到了内部处理错误。参数 编号 的值包含有关此错误的更多信息。

说明

过程 过程名称 在处理请求时出错。在正确位置 编号 指定的输出参数包含有关如何对错误作出响应的信息。

用户响应

使用在正确位置 编号 指定的输出参数中的信息来更正发生的错误,然后再次调用此过程。

sqlcode:+20459

sqlstate:01H55

SQL20460W 对于参数 编号,过程 过程名称 支持比指定版本 版本-2 更高的版本 版本-1

说明

过程 过程名称 支持为处于正确位置 编号 的参数指定更高版本 版本-1。该参数也支持指定的版本 版本-2

用户响应

查看此过程的文档,以了解此参数的更高版本所支持的附加功能。升级到当前版本以利用这些附加功能。

sqlcode:+20460

sqlstate:01H56

SQL20461W 过程 过程名称 以备用语言环境 语言环境-1 返回了输出,而不是采用在参数 编号 中指定的语言环境 语言环境-2 来返回输出的。

说明

在位于正确位置 编号 的参数中指定的语言环境 语言环境-2 不可用于过程 过程名称 的输出。输出是使用语言环境 语言环境-1 返回的。

用户响应

在服务器上安装采用指定语言环境 语言环境-2 的消息文件支持,或者指定受支持的语言环境。

sqlcode:+20461

sqlstate:01H57

SQL20462W 无法返回单值行更改列。原因码:原因码

说明

已将 WITH ROW CHANGE COLUMNS ALWAYS DISTINCT 指定为预编译属性,但数据库管理器无法返回单值行更改列。

已成功预编译该语句。

用户响应

如果单值行更改列符合预期,请使用以下 原因码 值来确定要执行的操作。

1
已预编译的 SELECT 语句不适合于行更改列。例如,它包括 GROUP BY、join 或 UNION。请修改 SELECT 语句以便它支持返回单值行更改列。
2
表中不存在定义 AS ROW CHANGE TIMESTAMP 的列。请更改表以便它具有一个带 AS ROW CHANGE TIMESTAMP 属性的列。
3
向表中添加了列定义的 AS ROW CHANGE TIMESTAMP,但该表尚未重组。请重组该表。

sqlcode:+20462

sqlstate:0168T

SQL20464N 尝试撤销 授权标识 的 SECADM 权限时被拒绝,因为它是具有 SECADM 权限的类型用户的唯一外部授权标识。

说明

类型用户必须至少有一个外部授权标识具有 SECADM 权限,而 REVOKE 语句尝试撤销具有此权限的类型用户的最后一个授权标识的权限。无法执行该语句。未撤销 SECADM 权限。

用户响应

对类型用户的另一个外部授权标识授予 SECADM 权限,以允许撤销 授权标识 的 SECADM 权限。

sqlcode:-20464

sqlstate:42523

SQL20465N 二进制 XML 值不完整,或者在位置 位置 处包含以十六进制数据 文本 开头的不识别的数据。原因码:原因码

说明

处理二进制 XML 值时发生了错误。位于第 位置 个字节的十六进制 XML 数据的前八个字节为 文本。如果不识别的数据位于二进制 XML 数据的后八个字节中,那么将只显示从位置 位置 开始直到此二进制 XML 数据末尾的数据。原因码指出了具体问题:

  1. 所指定的 XDBX 数据不完整。
  2. 为插入操作指定了 XML 序列,这是不受支持的。
  3. 为插入操作指定的 XDBX 数据包含不受支持的标记。
  4. 先前未定义所引用的字符串标识。
  5. 所指定的长度不正确。

无法处理该语句。

用户响应

解决 XML 数据中存在的问题,或者将应用程序更改为使用文本 XML 格式进行数据传输。

sqlcode:-20465

sqlstate:22541

SQL20467N 未执行此语句,因为不能将表达式作为查询的单个值计算。无效表达式在语句中语法元素 text 附近的位置。

说明

语句中语法元素 text 附近的表达式必须产生单个值,并且必须由下列其中一个元素组成:

  • 常量
  • 专用寄存器
  • 参数标记
  • 变量
  • 没有外部操作的确定性函数
  • 其操作数是前面列示的任何元素的表达式

此表达式不能包括下列任何元素:

  • 列名
  • 非确定性函数
  • 带有外部操作的函数
  • 其操作数是前面列示的任何元素的表达式

用户响应

更改此表达式以除去不能包括的任何元素后,再次运行此语句。

sqlcode:-20467

sqlstate:428H7

SQL20469N 由于原因码 原因码 所指出的原因,使得对 表名 表激活行或列访问控制失败。

说明

无法对 表名 表显式或隐式激活行访问控制,或者无法对此表显式激活列访问控制。原因码更具体地指示激活失败的原因:

37

为此表定义了触发器 对象名,但是未将此触发器定义为安全的触发器。

38

对此表定义了视图,并且为该视图定义了触发器 对象名,但是未将此触发器定义为安全的触发器。

40

此表是类型表或者目录表。

41

具体化查询表引用了此表,并且具体化查询表引用了具有 NOT SECURED 属性的函数。

48

此表是影子表的基本表。

用户响应

请更正错误,然后重试对此表激活行或列访问控制。

sqlcode:-20469

sqlstate:55019

SQL20470N CREATE 或 ALTER 语句失败,因为 对象类型-1 对象名-1 未定义为安全对象,而 对象类型-2 对象名-2 依赖于此对象。

说明

必须将 对象类型-1 对象名-1 定义为安全对象,因为 对象类型-2 对象名-2 依赖它进行列或行访问控制。

无法处理该语句。

用户响应

只要行许可权或掩码依赖于某个对象,或者引用激活了行或列访问控制的表的具体化查询表依赖于此对象,此对象就需要保持处于安全状态。要完成 CREATE 或 ALTER 语句,在确保不需要从属对象之后,删除从属对象。

sqlcode:-20470

sqlstate:428H8

SQL20471N INSERT 或 UPDATE 语句失败,因为结果行不满足行许可权。

说明

对 INSERT 或 UPDATE 操作的对象强制施加了行访问控制。检查了在该表中 INSERT 或 UPDATE 行的所有尝试,以确保结果行符合为该表定义的行许可权。

无法处理该语句。未执行 INSERT 或 UPDATE 操作,并且该表的内容保持不变。

用户响应

请检查行许可权的定义,以确定所请求的 INSERT 或 UPDATE 操作失败的原因。这可能是一个与数据有关的条件。

sqlcode:-20471

sqlstate:22542

SQL20472N 由于原因码 原因码 所指出的原因,对许可权或掩码 对象名 执行 ALTER 语句失败。

说明

由于下列其中一种原因而无法处理 ALTER MASK 或 ALTER PERMISSION 语句:

1

无法改变缺省行许可权。

2

无法指定 ENABLE,因为对象无效。

无法处理该语句。

用户响应

1

指定可以更改的行许可权或者列掩码的名称。

2

对于无效状态,请禁用行许可权或者列掩码,然后将它删除再重新创建。

sqlcode:-20472

sqlstate:428H9

SQL20473N 使用 NOT SECURE 选项创建的函数 函数名 失败。此函数引用了 列名 列,此列具有列掩码并且为此表激活了列访问控制。

说明

不安全函数的输入自变量不能引用这样一列:此列定义了列掩码,并且为此表激活了列访问控制。

无法处理该语句。

用户响应

  • 请不要引用这样一列作为此函数的输入自变量。
  • 禁用或者删除此列掩码,然后再次调用此函数。

sqlcode:-20473

sqlstate:428HA

SQL20474N 由于原因码 原因码 所指出的原因,使得对于对象类型为 对象类型 的数据库对象 对象名 执行 CREATE PERMISSION 或 CREATE MASK 语句失败。

说明

无法处理 CREATE PERMISSION 或 CREATE MASK 语句,因为 CREATE PERMISSION 或 CREATE MASK 语句中的定义引用了不受支持的对象。原因码指示了哪些对象不受支持:

1

为其定义行许可权或列掩码的表

2

表函数

3

用户定义的不安全的函数

4

定义为非确定性函数或者定义为具有外部操作的函数

5

OLAP 规范

6

XMLEXISTS 谓词

7

ROW CHANGE 表达式

8

顺序引用

9

已创建的临时表或者已声明的临时表

10

为 XML 列隐式创建的表

11

SELECT 子句中的 * 或 name.*

12

使用 FIELDPROC 定义的列

13

需要多种编码方案处理的语言元素

14

包含短划线 (-) 的普通 SQL 标识

16

行许可权或列掩码包括时间段规范

17

行许可权或者列掩码引用历史记录表或者在某个时间段内定义的表

18

未指定 SELECT 子句的聚集函数

19

昵称

20

方法

21

伪列

22

XMLQUERY 标量函数

24

影子表的基本表

33

与对其定义列掩码的列的数据类型不相同的 return 表达式的数据类型

34

与对其定义列掩码的列的长度属性不相同的 return 表达式的长度属性

35

与对其定义列掩码的列的 null 属性不相同的 return 表达式的 null 属性

36

与对其定义列掩码的列的相应属性不相同的编码方案的子类型

37

return 表达式的属性(但不是所包含的属性)

38

在用于定义生成列的表达式中引用了列。

51

无法为具有安全标号列的表创建行许可权。

52

行许可权无法引用具有安全标号列的表。

无法处理该语句。

用户响应

请更正错误,然后再次运行 CREATE 语句。

sqlcode:-20474

sqlstate:428HB

SQL20475N CREATE MASK 语句失败,因为已经为所指定的列定义了列掩码。列名:列名。表名:表名。现有掩码名称:掩码名称

说明

只能为一列定义单个掩码。

无法处理该语句。

用户响应

  1. 发出 DROP MASK SQL 语句以删除现有列掩码。
  2. 然后再次发出 CREATE MASK 语句以创建新的列掩码。

sqlcode:-20475

sqlstate:428HC

SQL20476N 使用一个无效格式字符串 格式字符串 调用了 函数名 函数。

说明

函数名 函数指定了无效的格式字符串。即使用来调用 函数名 函数的名称是 TO_CHAR 或 TO_NUMBER,该函数的值也可以为 VARCHAR_FORMAT 或 DECFLOAT_FORMAT。VARCHAR_FORMAT 函数的有效格式字符串必须满足下列条件:

  • 数据类型的实际长度不超过 254 个字节
  • 只包含受支持的格式元素
  • 不会产生其实际长度大于结果的长度属性的字符串

DECFLOAT_FORMAT 函数的有效格式字符串必须满足下列条件:

  • 数据类型的实际长度不超过 254 个字节
  • 至少包含一个格式元素
  • 只包含受支持的格式元素

无法处理该语句。

用户响应

更改 函数名 函数的格式字符串自变量。有关更多信息,请参阅 SQL Reference 中对该函数的相应描述。

sqlcode:-20476

sqlstate:22018

SQL20477N 函数名 函数不能使用格式字符串 格式字符串 来解释 字符串表达式 自变量。

说明

使用 格式字符串字符串表达式 调用了 函数名 函数。即使用来调用 函数名 函数的名称是 TO_NUMBER,该函数的值也是 DECFLOAT_FORMAT。不能使用格式字符串 格式字符串 来解释自变量 字符串表达式 的值以生成 DECFLOAT(34) 值。

下列任何一种原因都会导致发生此错误:

  • 对于指定的格式字符串来说,字符串表达式 太长
  • 字符串表达式 不符合在格式字符串中所指定的模板;例如:
    • 字符串表达式 中指定的位数对于格式字符串中相应格式元素来说太多,例如以下特定情况,1234 对于 999 来说是无效值
    • 字符串表达式 中的值对于格式字符串中相应格式元素无效,例如以下特定情况,$ 对于 S 来说是无效值

无法处理该语句。

用户响应

函数名 函数的自变量更改为有效值。有关更多信息,请参阅 SQL Reference 中对该函数的相应描述。

sqlcode:-20477

sqlstate:22018

SQL20478N 语句失败,因为虽然存在为 列名 列定义的列掩码 掩码名称,但是无法应用该列掩码,或者该列掩码与失败的语句相冲突。原因码:原因码

说明

不支持对于列掩码的引用。下列原因码描述了错误原因:

1

“选择”操作的结果表由涉及到 EXCEPT、EXCEPT ALL、INTERSECT、INTERSECT ALL 或 UNION 集合运算符的集合操作产生。将查询更改为不引用选择列表中的列,或者在此上下文中不使用集合操作。

22

列名 列输入到此语句中的表或行函数。某些对于函数结果的引用需要对函数输入应用列掩码 掩码名称,而某些对于函数结果的引用不需要列掩码。如果所指定的列输入到表或行函数,那么所有对于函数结果的引用都必须具有相同的掩码要求。

30

INSERT 或 UPDATE 操作使用从 列名 的列掩码 掩码名称 返回的掩码值。在用来返回掩码值的列掩码定义的 THEN 或 ELSE 子句中指定的表达式不是对 列名 列的简单引用。对于所指定的 INSERT 或 UPDATE 操作,列掩码定义中的 return 表达式必须是对于为其定义掩码的列的简单引用。

无法处理该语句。

用户响应

  • 移除 INSERT 或 UPDATE 操作中对于该列的引用,然后重试此操作。
  • 请与安全性管理员联系,以修改列掩码定义中的 return 表达式。

sqlcode:-20478

sqlstate:428HD

SQL20479N 对表 表名 执行 ALTER 或 RENAME 语句失败,因为此表是行或列访问控制定义的一部分。原因码:原因码

说明

由于下列其中一个原因,无法按指定方式改变 ALTER 或 RENAME 语句中的表 表名

1

在一个或多个列掩码或者行许可权定义中引用了此表。

2

在一个或多个列掩码或者行许可权定义中引用了此表中的列。

无法处理该语句。

用户响应

  • 删除此许可权或掩码,在完成“改变”或“重命名”操作之后重新创建此许可权或掩码。
  • 考虑在行级别临时保护对其定义此许可权或掩码的表,以确保此表中的所有窗口随时都受行和列访问控制保护。

sqlcode:-20479

sqlstate:42917

SQL20480W 新定义的对象 对象名 被标记为无效,因为它引用了一个未定义或者无效的对象 对象名-2,或者定义程序没有特权访问此对象。

说明

成功地定义了 对象名 对象,但是此对象已被标记为无效。可以成功地定义对象(例如,视图、触发器、SQL 过程和 SQL 函数),尽管这些对象引用了一个在应用程序服务器中未定义或者处于无效状态的对象(例如,对象名-2)或者定义程序没有特权访问此对象。对于无效对象,可以在下一次访问它们时以隐式方式自动重新验证它们,也可以使用 SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS 过程来对它们进行显式验证。

用户响应

如果期望定义 对象名-2 或者期望此对象名有效,请创建或重新验证此对象,然后重新定义 对象名。在首次访问 对象名 之前,请确保此对象所引用的所有对象都有效并且定义程序具有特权访问它们,以便能够成功地重新验证此对象。

sqlcode:+20480

sqlstate:0168Y

SQL20481N 创建或重新验证 对象名 对象将引起无效的直接或间接自引用。

说明

正在创建或替换的对象的定义包含对其自身的直接或间接引用。这种自引用可能显式地存在于定义中,也可能是在另一个与此对象有显示或隐式互引用关系的对象中暗含。仅当使用 CREATE SCHEMA 语句来创建对象定义时,此对象定义才能包含对它自身的有效引用。仅当新定义未包含自引用时,才能替换或者重新验证这样的对象。

用户响应

请除去自引用,或者使用 CREATE SCHEMA 语句来创建对自身进行有效引用的对象。

sqlcode:-20481

sqlstate:429C3

SQL20482N 对指定为要重新验证的所有对象进行重新验证失败。未能重新验证 对象名-1 对象,因为它引用了 对象名-2 对象。

说明

未能成功地重新验证被指定为由 SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS 过程重新验证的所有对象,因为它们引用的对象中至少有一个不存在或者仍然无效。未能重新验证其中一个对象 对象名-1,因为它引用了 对象名-2 对象,而后者不存在或者仍然无效。

用户响应

创建应存在的所有对象,并更正要重新验证的对象所引用的仍然无效的所有对象。SYSCAT.INVALIDOBJECTS 目录视图中包含有关这些无效对象的信息。

sqlcode:-20482

sqlstate:429C4

SQL20483N 调用 例程名 例程时,无效地使用了所指定自变量 参数名。原因码:原因码

说明

此错误可能是由于下列原因而导致的:

1

例程名 的过程调用中包含一个指定自变量 参数名,而此自变量在过程定义中不存在。请将 参数名 更改为过程定义中存在的一个自变量。此原因码不适用于 V9.7 修订包 1 或更高版本。

2

例程名 的例程调用中包含一个指定自变量 参数名,该自变量后面跟着一个或多个未指定的自变量。还必须指定跟在指定自变量后面的所有自变量。更改例程调用,以便还指定了跟在指定自变量后面的所有自变量。

3

例程名 的例程调用中多次显式或隐式地指定了指定自变量 参数名。更改例程调用,以便只存在对于自变量 参数名 的一次引用。

4

未编目的例程 例程名 的过程调用使用了指定自变量 参数名。未编目的过程不支持指定参数。更改过程调用,以使它不包含指定自变量。

5

例程名 的函数调用指定了指定自变量 参数名,并且至少两个候选函数中的相应参数的序数位置不同。无法使用此自变量名称及相关联的候选函数集执行函数解析。通过调整 SQL 路径或替换函数定义来更改函数调用以使其更确切并减少候选函数集或更改所考虑的候选函数集。

无法处理该语句。

用户响应

请更正 SQL 语句中的例程调用。

sqlcode:-20483

sqlstate:4274K

SQL20484N 调用 例程名 例程时省略了一个没有已定义的 DEFAULT 值的 参数名 参数。

说明

进行过程调用时省略了一个参数值。这是无效的,除非此参数已定义为具有 DEFAULT 值。无法处理该语句。

用户响应

更正过程调用,以对省略的参数提供参数值。

sqlcode:-20484

sqlstate:428HF

SQL20485N 用于 例程名 例程的 CREATE 语句在一个具有已定义的 DEFAULT 值的参数后面定义了一个没有 DEFAULT 值的参数。

说明

在创建过程例程名期间,在指定一个具有已定义的 DEFAULT 值的参数之后指定了一个没有已定义的 DEFAULT 值的参数。必须在指定了没有已定义的 DEFAULT 值的所有参数之后才能指定那些具有已定义的 DEFAULT 值的参数。无法处理该语句。

用户响应

对于跟在第一个具有已定义的 DEFAULT 值的参数后面的所有参数提供 DEFAULT 值;或者对参数列表重新排序,以使所有具有已定义的 DEFAULT 值的参数跟在所有没有已定义的 DEFAULT 值的参数后面。

sqlcode:-20485

sqlstate:428HG

SQL20490N 此语句失败,因为对表 表名 指定了 VERSIONING 子句,但是无法将此表用作系统时间段时间表。原因码:原因码

说明

CREATE 或 ALTER TABLE 语句尝试使此表成为系统时间段时间表,但是由于下列原因码所指示的原因而使得表定义无效:

1

此表已定义为系统时间段时间表或者历史记录表。

2

此表没有 SYSTEM_TIME 时间段或者“事务开始标识”列。但是,系统时间段时间表必须具有 SYSTEM_TIME 时间段和“事务开始标识”列。

3

此表是具体化查询表。

4

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

5

必须将“事务开始标识”列定义为与此表中 SYSTEM_TIME 时间段的“行开始”列和“行结束”列具有相同的数据类型、长度、精度和小数位。

6

此表或者相关联的历史记录表激活了 NOT LOGGED INITIALLY 属性。

7

此表具有相关联的安全策略。

无法处理该语句。

用户响应

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

sqlcode:-20490

sqlstate:428HM

SQL20491N 此语句失败,因为时间段 时间段名称 的规范无效。原因码:原因码

说明

在 CREATE 或 ALTER 语句中指定的 period 属性由于下列原因码所指示的原因而无效:

1

时间段的“行开始”列名不能与“行结束”列名相同。

2

某个时间段中列的名称不能与该表的另一个时间段定义中所使用的列相同。

3

“行开始”列必须与“行结束”列具有相同的数据类型、长度、精度和小数位。

4

为“行开始”列指定的时间戳记类型必须与为“行结束”列指定的时间戳记类型相同。

5

对于 BUSINESS_TIME 时间段,列不能是使用 GENERATED 子句定义的列。

6

对于 SYSTEM_TIME 时间段,“行开始”列必须定义为 ROW-BEGIN,“行结束”列必须定义为 ROW-END。

无法处理该语句。

用户响应

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

sqlcode:-20491

sqlstate:428HN

SQL20494N 只能使用 SYSPUBLIC 而不能使用模式名 模式名 来限定公用别名 名称

说明

为公用别名指定了限定名,但限定符不是 SYSPUBLIC。

用户响应

将由两部分组成的名称更改为由一部分组成的名称,或者指定限定符 SYSPUBLIC。如果未打算使用公用别名,但是在语句中指定了 PUBLIC,请除去关键字 PUBLIC。

sqlcode:-20494

sqlstate:428EK

SQL20495N 模块初始化过程 SYS_INIT 的定义无效。原因码:返回码

说明

初始化过程定义可能由于下列原因而无效:

1

SYS_INIT 过程定义包含参数。

2

SYS_INIT 过程定义返回了结果集。

3

无法发布 SYS_INIT 过程。

用户响应

请修改该初始化过程定义,以使其语法有效。

sqlcode:-20495

sqlstate:428HP

SQL20496N 由于例程 名称 只是例程原型,因此无法被调用。

说明

例程 名称 被定义为模块中的原型,而未完全实现。在模块中找到具有所指定例程名的例程原型,但没有例程主体。例程定义不完整,因此无法被调用。

用户响应

请更改该模块并添加完整的例程定义。再次尝试。

sqlcode:-20496

sqlstate:55019

SQL20498N 为以下字段指定的数据类型不受支持:字段名,指定的数据类型 类型名

说明

在 CREATE TYPE 语句或 CREATE HADOOP TABLE 语句中对包含类型为数组的列的行指定的数据类型无效。在指定数据类型时,下列限制适用。

  • 下列数据类型不受支持:
    • XML
    • LONG VARCHAR
    • LONG VARGRAPHIC
    • 基于前面列示的任何类型的用户定义的数据类型
    • REF(OID 列名引用)
    • BOOLEAN(在 V9.7.5 之前)
    • CURSOR
    • SYSPROC.DB2SECURITYLABEL
    • 用户定义的结构化数据类型
    • 其数据类型在行数据类型中不受支持的表列或变量的锚点
    • 弱类型化游标的行的锚点
    • 用户定义的弱类型化单值类型(包含数据类型约束)
    • 在 SQL 例程中声明的本地类型中的嵌套类型
  • ARRAY 类型或 ROW 类型可以作为元素嵌套在其他 ROW 类型字段类型中,但超出了最大嵌套级别。
  • 对于 Hadoop 表,唯一受支持的嵌套是行数组。

用户响应

确保在 CREATE TYPE (row) 语句或 CREATE HADOOP TABLE 语句中对包含类型为数组的列的字段、由锚点表或锚点视图的列所定义的字段指定的数据类型受支持

sqlcode:-20498

sqlstate:429C5

SQL20499N 数据类型 类型名 对于 关键字 谓词的操作数无效。

说明

关键字 所指示的谓词不支持该谓词的操作数具有 类型名 数据类型。

用户响应

请将该操作数更改为具有该谓词所支持的数据类型,或者除去操作数数据类型无效的谓词。

sqlcode:-20499

sqlstate:428HQ