SQL20000 - SQL20249
SQL20005N 由于已超出对象类型的最大内部标识数,因此语句失败。内部标识限制:限制。对象类型:对象类型。
说明
在创建、声明或变更其中一种类型的数据库对象时,将创建内部标识以便唯一地标识该对象。可以创建的唯一标识数存在上限。
超出此类对象的内部标识数限制时,将返回此消息。
用户响应
通过执行下列故障诊断步骤对此错误作出响应:
- 删除不再使用的类型为 对象类型 的对象。
- 如果 对象类型 为 DECLARE TYPE,那么移除当前复合 SQL(编译型)语句中有关任何未使用的类型的类型声明。
- 如果 object-type 是工作负载管理对象,那么您可以通过执行以下步骤来重置内部标识计数:
- 使用 db2look 实用程序(指定 -wlm 选项)抽取将重新生成工作负载管理对象的 DDL 语句。
- 从数据库中删除所指定类型的所有工作负载管理对象。
- 通过使用 db2look 实用程序生成的文件中的信息,重新创建所指定类型的工作负载管理对象。
sqlcode:-20005
sqlstate:54035
SQL20010N 当结构化类型的实例为 NULL 时,不允许更换方法 方法标识。
说明
方法 方法标识 是用结构化类型的空实例指定的 mutator 方法。不能在空实例上处理 mutator 方法。在某些情况下,方法名不可用。
无法处理该语句。
用户响应
确定配合 mutator 方法使用的空实例。在实例上使用任何 mutator 方法之前,使用构造函数来创建结构化类型的一个非空实例。
SELECT FUNCSHEMA, FUNCNAME,
SPECIFICNAME
FROM SYSCAT.FUNCTIONS
WHERE
FUNCID = INTEGER(
method-ID
)sqlcode:-20010
sqlstate:2202D
SQL20011N 已经对数据类型 类型名 的子类型或超类型定义了变换组 组名。
说明
对于与 类型名 位于同一层次结构的类型,已经存在一个称为 组名 的变换组。可能对 类型名 的超类型或子类型定义了该变换组。 在结构化类型层次结构内,变换组名只能使用一次。
无法处理该语句。
用户响应
更改变换组的名称。
sqlcode:-20011
sqlstate:42739
SQL20012N 类型 类型名 没有任何要删除的相关联变换组。
说明
没有为 类型名 定义任何变换。没有要删除的任何内容。
该语句未删除任何变换组。
用户响应
确保在 SQL 语句中正确指定了该类型的名称(包括任何必需的限定符),并且该类型存在。
sqlcode:-20012
sqlstate:42740
SQL20013N 对象 超对象名 作为对象 子对象名 的超类型、超表或超视图无效。
说明
如果导致错误的语句正在创建一个类型,那么 超对象名 类型不能是 子对象名 的超类型,因为它不是用户定义的结构化类型。
如果导致错误的语句正在创建一个表,那么 超对象名 表不能是表 子对象名 的超表,因为它没有被定义为类型表,或表 超对象名 的类型不是定义表 子对象名 时使用的类型的直接超类型。
如果导致错误的语句正在创建一个视图,那么 超对象名 视图不能是视图 子对象名 的超视图,因为它没有被定义为带类型视图,或视图 超对象名 不是定义视图 子对象名 时使用的类型的直接超类型。
无法处理该语句。
用户响应
在 CREATE 语句的 UNDER 子句中指定有效的类型、表或视图。
sqlcode:-20013
sqlstate:428DB
SQL20014N 变换组 组名 变换类型 变换函数对于类型 类型名 而言无效。原因码:原因码。
说明
- 1
- FROM SQL 变换函数只能有一个参数。
- 2
- FROM SQL 变换函数的参数的类型必须是 类型名。
- 3
- TO SQL 变换函数的 RETURNS 数据类型必须是类型 类型名。
- 4
- 返回了标量的 FROM SQL 变换函数的 RETURNS 类型必须是除了 DECIMAL 之外的内置数据类型。
- 5
- 返回了标量的 FROM SQL 变换函数的所有 RETURNS 类型必须是除了 DECIMAL 之外的内置数据类型。
- 6
- TO SQL 变换函数必须至少有一个参数。
- 7
- TO SQL 变换函数的参数类型必须全部都是除了 DECIMAL 之外的内置数据类型。
- 8
- TO SQL 变换函数必须是标量函数。
- 9
- FROM SQL 变换函数必须是使用 SQL 语言来编写的,或者必须使用利用 SQL 语言编写的另一个 FROM SQL 变换函数。
- 10
- TO SQL 变换函数必须是使用 SQL 语言来编写的,或者使用利用 SQL 语言编写的 TO SQL 变换函数。
无法处理该语句。
用户响应
- 1
- 指定一个 FROM SQL 变换函数,并且其特征符只有一个参数。
- 2
- 指定一个 FROM SQL 变换函数,其参数类型为 类型名。
- 3
- 指定一个 TO SQL 变换函数,其 RETURNS 类型为 类型名。
- 4
- 指定一个 FROM SQL 变换函数,其 RETURNS 类型是除了 DECIMAL 之外的内置数据类型。
- 5
- 指定一个 FROM SQL 变换函数,其中,行中的每个元素都具有 RETURNS 类型,它是除了 DECIMAL 之外的内置数据类型。
- 6
- 指定一个 TO SQL 变换函数,其特征符至少有一个参数。
- 7
- 指定一个 TO SQL 变换函数,其所有参数类型都是除了 DECIMAL 之外的内置数据类型。
- 8
- 指定一个是标量函数的 TO SQL 变换函数。
- 9
- 指定一个使用 SQL 语言编写的 FROM SQL 变换函数,或指定使用利用 SQL 语言编写的另一个 FROM SQL 变换函数。
- 10
- 指定一个使用 SQL 语言编写的 TO SQL 变换函数,或者指定使用一个利用 SQL 语言编写的 TO SQL 变换函数。
sqlcode:-20014
sqlstate:428DC
SQL20015N 未对数据类型 类型名 定义变换组 组名。
说明
未对数据类型 类型名 定义所指定的变换组 组名。数据类型 类型名 可能已经在语句中显式指定,也有可能根据结构化类型(该结构化类型要求存在该数据类型的变换组)的使用情况进行了隐式指定。
如果 组名 是空的,那么要么是未指定 TRANSFORM GROUP 绑定选项,要么是未指定 CURRENT DEFAULT TRANSFORM GROUP 专用寄存器,因此,对 类型名 没有进行任何变换。
无法处理该语句。
用户响应
使用 CREATE TRANSFORM 语句对数据类型 类型名 定义变换组 变换类型。如果在删除变换时发生错误,不需要执行任何操作,因为对于该数据类型不存在变换组。
如果 组名 是空的,那么在 CURRENT DEFAULT TRANSFORM GROUP 专用寄存器上指定 TRANSFORM GROUP 绑定选项。
sqlcode:-20015
sqlstate:42741
SQL20016N 与类型或列 类型或列名 相关联的直接插入长度的值过小。
说明
对于结构化类型 类型或列名 的定义,它指定了 INLINE LENGTH 值,该值小于由构造函数对该类型返回的大小(32 + 10 * 属性个数),并且小于 292。对于列 类型或列名 的改变,指定的 INLINE LENGTH 小于当前直接插入长度。
无法处理该语句。
用户响应
指定足够大的 INLINE LENGTH 值。对于结构化类型,它至少为构造函数对该类型返回的大小,或者至少为 292。对于列,它必须大于当前直接插入长度。如果当改变类型(或者此类型的某些超类型)以添加属性时发生此错误,那么不能添加该属性,或者必须删除该类型,并用一个更大的 INLINE LENGTH 值来重新创建。
sqlcode:-20016
sqlstate:429B2
SQL20017N 如果添加此子类型,将超过类型层次结构的最大层数。
说明
在类型层次结构中的最大层数是 99。添加此类型将超过该最大值。
无法处理该语句。
用户响应
不要将任何子类型再添加到此类型层次结构中。
sqlcode:-20017
sqlstate:54045
SQL20018N 行函数 函数名 必须最多只返回一行。
说明
该函数定义为返回单行。处理该函数的结果超过一行。
用户响应
确保该函数是以最多只返回一行的方式定义的。
sqlcode:-20018
sqlstate:21505
SQL20019N 不能将从函数体返回的结果类型指定给在 RETURNS 子句中定义的数据类型。
说明
函数体返回的每一列的数据类型必须能指定给在 RETURNS 子句中指定的对应列。
如果该函数是标量函数,那么仅有一列。
用户响应
更改 RETURNS 类型或从函数体返回的类型,以便对应列的数据类型是可指定的。
sqlcode:-20019
sqlstate:42866
SQL20020N 操作 操作类型 对于类型表无效。
说明
无法对类型表执行由 操作类型 标识的操作。
无法处理该语句。
用户响应
如果是 ALTER 语句,请移除 ADD COLUMN 子句、ADD PERIOD 子句或 SET DATATYPE 子句。只能通过重新定义具有结构化类型的表来添加列,该类型包括作为属性的新列。类似地,只能通过重新定义具有某类型(该类型包括具有另一数据类型的列)的表来更改列的数据类型。
如果是 CREATE TABLE 语句,请移除 DISTRIBUTE BY RANDOM 子句。不允许将类型表创建为随机分发表。
sqlcode:-20020
sqlstate:428DH
SQL20021N 不能更改或删除继承的列或属性 名称。
说明
- 在 CREATE TABLE 语句中,不能对 CREATE TABLE 语句中的列 名称 指定 WITH OPTIONS 子句,因为该列是从表层次结构中的超表继承来的。
- 在 ALTER TABLE 语句中,不能对列 名称 指定 SET SCOPE 子句或 COMPRESS 子句,因为它是从表层次结构中的超表继承来的。
- 在 CREATE VIEW 语句中,不能对 CREATE VIEW 语句中的列 名称 指定 WITH OPTIONS 子句,因为该列是从视图层次结构中的超视图继承来的。
- 在 ALTER TYPE 语句中,不能对属性 名称 指定 DROP ATTRIBUTE 子句,因为该属性是从类型层次结构中的超类型继承来的。
无法处理该语句。
用户响应
只可对以下这样的表或视图设置或改变列的选项:在引入了该列的类型表层次结构或带类型视图层次结构中的表或视图。只可从引入了该属性的类型层次结构中的数据类型删除属性。
sqlcode:-20021
sqlstate:428DJ
SQL20022N 已定义引用列 列名 的作用域。
说明
不能添加引用列 列名 的作用域,因为已经定义了该作用域。
无法处理该语句。
用户响应
从 ALTER TABLE 语句中除去 ADD SCOPE 子句。
sqlcode:-20022
sqlstate:428DK
SQL20023N 外部参数或有源函数的参数 参数号 定义了作用域。
说明
当引用类型参数与外部函数或有源用户定义的函数配合使用时,该参数不应定义作用域。
无法处理该语句。
用户响应
从该参数的定义中除去 SCOPE 规范。
sqlcode:-20023
sqlstate:428DL
SQL20024N 未用结构化类型 类型名 定义作用域表或视图 目标名。
说明
- 不是类型表或
- 不是带类型视图或
- 表或视图的类型与引用类型的目标类型不同。
无法处理该语句。
用户响应
使用类型表或带类型视图来指定该引用的作用域,且该类型与引用类型的目标类型相同。
sqlcode:-20024
sqlstate:428DM
SQL20025N 未在外部函数的 RETURNS 子句中指定 SCOPE,或在有源函数的 RETURN 子句中指定了 SCOPE。
说明
- 当引用类型用作用户定义的外部函数的结果时,该引用类型必须定义作用域。
- 当引用类型用作用户定义的有源函数的结果时,该引用类型不能定义作用域。 该函数将使用源函数的作用域。
无法处理该语句。
用户响应
当将引用类型作为返回类型来定义外部函数时,确保指定了 SCOPE 子句。当将引用类型作为返回类型来定义 SOURCED 函数时,确保未指定 SCOPE 子句。
sqlcode:-20025
sqlstate:428DN
SQL20026N 类型 类型名 不是结构化类型,或者不是可实例化的结构化类型。
说明
- 不是结构化类型;或者
- 是被定义为不可实例化的结构化类型。
无法处理该语句。
用户响应
验证在该语句中是否使用了正确的类型名。
sqlcode:-20026
sqlstate:428DP
SQL20027N 因为类型为 类型名 的子表或子视图 对象名 已存在,所以未创建子表或子视图 子对象名。
说明
在类型表或视图层次结构中,可能只存在具有特定子类型的一个子表或子视图。因为已定义了类型为 类型名 的表或视图,所以不能创建表或视图 子对象名。已存在的表或视图是 对象名。
无法处理该语句。
用户响应
验证该子表或子视图是否是以正确的类型创建的,且验证该子表是否是在正确的超表下创建的,或验证该视图是否是在正确的超视图下创建的。
sqlcode:-20027
sqlstate:42742
SQL20028N 表或视图 表名 不能与同一层次结构中的其他表或视图具有不同的模式名。
说明
类型表层次结构中的所有表必须有相同的模式名,且带类型视图层次结构中的所有视图必须有相同的模式名。
无法处理该语句。
用户响应
验证表或视图的模式名是否正确。如果指定层次结构名,那么验证其模式名是否与根表或视图的模式名相匹配。如果正在创建子表,那么验证是否正在正确的超表下面创建该子表。如果正在创建子视图,那么验证是否正在正确的超视图下面创建该子视图。
sqlcode:-20028
sqlstate:428DQ
SQL20029N 无法将 操作 应用于子表或子视图。
说明
对一个表或视图应用了操作 操作,但该表或视图不是表层次结构或视图层次结构的根。
子表或子视图不能是随机分发表。
无法处理该语句。
用户响应
在该操作中指定表层次结构的根表或者指定视图层次结构的根视图。
如果操作为 DISTRIBUTE BY RANDOM,请再次执行不带 DISTRIBUTE BY RANDOM 子句的 CREATE TABLE 语句。
sqlcode:-20029
sqlstate:428DR
SQL20030N 当类型表、类型视图或索引扩展名 对象名 从属于结构化类型 类型名 时,不能添加或删除该类型的属性。
说明
如果当前存在结构化类型或其任何子类型的类型表或带类型视图,那么不能添加或删除该结构化类型的属性。如果一列存在于直接或间接使用了 类型名 的表中,那么也不能添加或删除结构化类型的属性。另外,如果在索引扩展中使用了类型 类型名 或者它的 其中一个子类型,那么也不能添加或删除结构化类型的属性。表、视图或索引扩展 对象名 是依赖于结构化类型 类型名 的表、视图或索引扩展。 可能有依赖于该类型或其正确子类型的其他表、视图或索引扩展。
无法处理该语句。
用户响应
验证正在改变的是正确的类型,或删除依赖于结构化类型 类型名 的任何表、视图和索引扩展。
sqlcode:-20030
sqlstate:55043
SQL20031N 可能未在子表中定义 对象。
说明
只能在类型表层次结构的根表上定义主键和唯一约束。类似地,只能在类型表层次结构的根表上定义唯一索引。
无法处理该语句。
用户响应
只能在表层次结构的根表上定义唯一索引、主键或唯一约束。
sqlcode:-20031
sqlstate:429B3
SQL20032N 不能在子表 表名 上定义指定列的索引。
说明
对该索引指定的列全都是在类型表层次结构中比子表 表名 更高的层次上引入的。因此,不能在此子表上创建该索引。
无法处理该语句。
用户响应
确定表层次结构中首次包括所有列的表。当创建索引时,使用它作为表名。
sqlcode:-20032
sqlstate:428DS
SQL20033N 包括 部分表达式 的表达式未包括有效作用域内的引用。
说明
包括 部分表达式 的表达式需要一个操作数,该操作数应是定义了作用域的引用类型。如果该表达式包括 DEREF 函数,那么该函数的自变量必须是定义了作用域的引用类型。
对于取消引用运算符(->),左操作数必须是定义了作用域的引用类型。
无法处理该语句。
用户响应
更正该 SQL 语句的语法,以使操作数或自变量是定义了作用域的引用类型。
sqlcode:-20033
sqlstate:428DT
SQL20034N 数据类型 列表类型名 未包括在结构化数据类型层次结构中,而该层次结构包括 TYPE 谓词的左操作数的数据类型的 左类型名。
说明
在 TYPE 谓词中列示的所有数据类型必须包括在包含 TYPE 谓词的左操作数的数据类型的数据类型层次结构中。数据类型 左类型名 不是结构化数据类型(不是任何类型层次结构的一部分),或数据类型 列表类型名 未包括在包含 左类型名 的数据类型层次结构中。
无法处理该语句。
用户响应
确保表达式的数据类型和 TYPE 谓词中列示的所有数据类型都是同一数据类型层次结构内的结构化数据类型。如果 左类型名 是 SYSIBM.REFERENCE,那么使用 DEREF 来使表达式的结果数据类型成为结构化数据类型。
sqlcode:-20034
sqlstate:428DU
SQL20035N 取消引用运算符的左操作数无效。路径表达式以 表达式字符串 开始。
说明
- 左操作数包括将列函数用作自变量的一个列函数。
- 左操作数表达式包括一个列函数和对不在 GROUP BY 子句中的某列的引用。
用户响应
更正以 表达式字符串 开始的路径表达式的取消引用运算符的左操作数。
sqlcode:-20035
sqlstate:428DV
SQL20036N 不能使用取消引用运算符来引用对象标识列 列名。
说明
取消引用运算符与作为右操作数的 列名 配合使用。此列是取消引用的目标表的对象标识列,且对于此运算符无效。
无法处理该语句。
用户响应
更正在取消引用操作中的列的名称。
sqlcode:-20036
sqlstate:428DW
SQL20037N 对象标识列是创建类型表或视图层次结构的根表或根视图 对象名 所必需的。
说明
在创建类型表层次结构的根表时,必须在 CREATE TABLE 语句上定义(使用 REF IS 子句)对象标识(OID)列。
在创建带类型视图层次结构的根视图时,必须在 CREATE TABLE 语句上定义(使用 REF IS 子句)对象标识(OID)列。
无法处理该语句。
用户响应
将必需的 OID 列(REF IS 子句)添加到 CREATE TABLE 或 CREATE VIEW 语句中。
sqlcode:-20037
sqlstate:428DX
SQL20038N 无法处理此语句,这是因为此语句包含下列不兼容的子句或元素:关键字-1 和 关键字-2。
说明
不能使用 关键字-1 子句来指定语句中的 关键字-2 子句。如果 CODEUNITS32 是其中一个不兼容的元素,请注意可能已使用 string_units 配置参数显式设置字符串单位。
用户响应
- 请从语句中移除 关键字-1 或 关键字-2 子句。
- 如果 CODEUNITS32 是其中一个不兼容的元素,请将 OCTETS 指定为数据类型的字符串单位。
sqlcode:-20038
sqlstate:42613
SQL20039N 索引 索引名 的定义与索引扩展名 索引扩展名 的定义不匹配。
说明
- 在 EXTEND USING 子句中跟在索引扩展后的自变量数与该索引扩展的实例参数数不同。
- 在 EXTEND USING 子句中跟在索引扩展后的自变量的数据类型与 该索引扩展的对应实例参数的数据类型不完全匹配(包括长度或精度和小数位)。
- 对该索引指定的列数与该索引扩展的源键参数的数目不同。
- 索引列的数据类型与该索引扩展的对应源键参数的数据类型不完全匹配(包括长度或精度和小数位)。对于子类型,存在数据类型完全匹配的例外情况。该索引列可能是指定为对应源键参数的数据类型的子类型。
无法处理该语句。
用户响应
更改索引定义,以使索引扩展匹配。
sqlcode:-20039
sqlstate:428E0
SQL20040N (用于)产生范围的表函数 范围函数名 的结果的数目或类型与键变换表函数 变换函数名(索引扩展名为 索引扩展名)的结果的数目或类型不一致。
说明
- 返回的列数最多两倍于键变换函数所返回的列数
- 列数为偶数(返回列的前半部分是开始键值,而后半部分是停止键值)
- 让每个开始键列的类型与对应的停止键列的类型相同
- 让每个开始键列的类型与对应的变换函数列的类型相同。
更准确地说,使 1:t1,... an:tn 为键变换函数的函数结果列和数据类型。用于产生范围的函数的函数结果列就必须是 b1:t1,...,bm:tm,c1:t1,...,cm:tm,其中,m <= n 和“b”列是起始键列,“c”列是停止键列。
无法处理该语句。
用户响应
指定与键变换表函数一致的用于产生范围的表函数。
sqlcode:-20040
sqlstate:428E1
SQL20041N 目标键参数的数目或类型与键变换函数 函数名(索引扩展名为 索引扩展名)的数目或类型不匹配。
说明
目标键参数的数目必须与键变换函数返回的结果数相匹配。另外,目标键参数的类型必须与对应的函数结果类型完全匹配。
无法处理该语句。
用户响应
指定作为目标键参数的参数的正确数目和类型。
sqlcode:-20041
sqlstate:428E2
SQL20042N 在索引扩展名 索引扩展名 中,已超过允许的最大 参数类型 参数数。最大值是 最大值。
说明
指定了太多的参数。如果 参数类型 是 INDEX EXTENSION,那么最多可以指定 最大值 个实例参数。如果 参数类型 是 INDEX KEYS,那么最多可以指定 最大值 个键源参数。
无法处理该语句。
用户响应
指定不超过最大数目的参数。
sqlcode:-20042
sqlstate:54046
SQL20043N 例程 例程名 的自变量无效。原因码:原因码。
说明
- 1
- 对于键变换函数,该自变量不是 observer 方法或索引扩展实例参数。
- 2
- 用作该自变量的表达式使用指定 LANGUAGE SQL 的例程。
- 3
- 用作该自变量的表达式是一个子查询。
- 4
- 用作该自变量的表达式的数据类型不能是结构化类型。
- 5
- 键变换函数的自变量的数据类型不能是结构化数据类型 LOB、DATALINK、XML、LONG VARCHAR 或 LONG VARGRAPHIC。
- 6
- 用作自变量的表达式包含一个 XMLQUERY 或 XMLEXISTS 表达式。
无法处理该语句。
用户响应
对该函数指定有效的自变量。
sqlcode:-20043
sqlstate:428E3
SQL20044N 在 CREATE INDEX EXTENSION 或 CREATE FUNCTION 语句中,例程 例程名 或 CASE 表达式无效。原因码:原因码。
说明
- 1
- 键变换函数不是表函数。
- 2
- 键变换函数不是外部函数。
- 3
- 键变换函数是变体函数。
- 4
- 键变换函数是外部操作函数。
- 5
- 用于产生范围的函数不是表函数。
- 6
- 用于产生范围的函数不是外部函数。
- 7
- 用于产生范围的函数是变体函数。
- 8
- 用于产生范围的函数是外部操作函数。
- 9
- 索引过滤函数不是外部函数。
- 10
- 索引过滤函数是变体函数。
- 11
- 索引过滤函数是外部操作函数。
- 12
- 过滤函数或 CASE 表达式的结果类型不是整数数据类型。
- 13
- 子查询被用在 CASE 表达式中或者被用作过滤函数的自变量。
- 14
- 键变换函数与数据库不具有相同的编码方案。
- 15
- 产生范围的函数与数据库不具有相同的编码方案。
- 16
- 索引过滤函数与数据库不具有相同的编码方案。
- 17
- 过滤函数不是外部函数。
- 20
- XMLQUERY 或 XMLEXISTS 被用在 CASE 表达式中或者被用作过滤函数的自变量。
无法处理该语句。
用户响应
如果 例程名 不是空的,那么指定符合在 CREATE INDEX EXTENSION 或 CREATE FUNCTION 语句的特定子句中所指定函数或方法的规则的例程。否则,指定一个符合 FILTER USING 子句中的 CASE 表达式的规则的 CASE 表达式。
sqlcode:-20044
sqlstate:428E4
SQL20045N 实例参数 参数名 的数据类型在索引扩展 索引扩展名 中无效。
说明
实例参数必须是下列数据类型之一:VARCHAR、VARGRAPHIC、INTEGER、DECIMAL 或 DOUBLE。
无法处理该语句。
用户响应
对实例参数 参数名 指定有效的数据类型。
sqlcode:-20045
sqlstate:429B5
SQL20046N 只能对有效的用户定义的谓词指定 谓词字符串 后面的 SELECTIVITY 子句。
说明
SELECTIVITY 子句是对不包括有效用户定义的函数的谓词指定的。有效的用户定义的函数包括 PREDICATES 子句和与该谓词匹配的 WHEN 子句。 只能对用户定义的谓词指定 SELECTIVITY 子句。
无法处理该语句。
用户响应
除去谓词后面的 SELECTIVITY 子句。
sqlcode:-20046
sqlstate:428E5
SQL20047N 在索引扩展名 索引扩展名 中找不到搜索方法 方法名。
说明
在用户定义谓词的使用规则中引用的方法 方法名 必须与在索引扩展 索引扩展 中指定的其中一种搜索方法相匹配。
无法处理该语句。
用户响应
指定在索引扩展中定义的方法。
sqlcode:-20047
sqlstate:42743
SQL20048N 方法 方法名 的搜索自变量与索引扩展名 索引扩展名 中对应搜索方法中的搜索自变量不匹配。
说明
为方法 方法名 提供的搜索自变量与索引扩展 索引扩展 中对应搜索方法的自变量不匹配。自变量的数量或类型与这些参数的定义数目或类型不匹配。
无法处理该语句。
用户响应
指定与在索引扩展中定义的参数相匹配的搜索自变量。
sqlcode:-20048
sqlstate:428E6
SQL20049N 在 AS PREDICATE WHEN 子句中跟在比较运算符后的操作数的类型与 RETURNS 类型不完全匹配。
说明
用户定义谓词的定义无效。在 AS PREDICATE WHEN 子句中,跟在比较运算符后的操作数的类型与该函数的 RETURNS 类型不完全匹配。
无法处理该语句。
用户响应
指定具有正确数据类型的操作数。
sqlcode:-20049
sqlstate:428E7
SQL20050N 搜索目标或搜索自变量 参数名 与正在创建的函数中的名称不匹配。
说明
在索引使用规则中的每个搜索目标都必须与正在创建的函数的某些参数名匹配。在索引使用规则中的每个搜索自变量必须与 EXPRESSION AS 子句中的表达式名或者正在创建的函数的参数名相匹配。在参数列表中必须为函数指定参数名。
无法处理该语句。
用户响应
在搜索目标或搜索自变量中仅指定有效的函数名。
sqlcode:-20050
sqlstate:428E8
SQL20051N 在同一使用规则中,自变量 参数名 不能同时作为搜索目标和搜索自变量出现。
说明
在使用子句中,不能将函数参数指定为 KEY 后的自变量以及指定为 USE 关键字后的指定方法的自变量。
无法处理该语句。
用户响应
在最多一个搜索目标或搜索自变量中指定函数的参数名。
sqlcode:-20051
sqlstate:428E9
SQL20052N 列 列名 是不可更新的对象标识列。
说明
UPDATE 语句包括设置作为对象标识(OID)列的一个列。不能更新 OID 列。
无法处理该语句。
用户响应
从 UPDATE 语句中除去 列名 的 SET。
sqlcode:-20052
sqlstate:428DZ
SQL20053N 类型视图 视图名 中的全查询无效。原因码:原因码。
说明
- 1
- 子视图定义包含公共表表达式,或者,子视图定义中分支的范围未涵盖单个表、视图、昵称或别名。
- 2
- 数据库管理器不能表明以下两者的区别:其一是在表层次结构上的分支的行集,另一是在带类型视图层次结构其余部分中的同一表层次结构上的所有分支的行集。
- 3
- 在根视图中的层次结构上的分支的第一个表达式:
- 不是 FROM 子句中引用的类型表或带类型视图的对象标识列,并且不使用 REF IS 子句中的 UNCHECKED 选项,或者
- 如果 FROM 子句中的表不是类型表,那么该列可为空,或者并非只在该列上定义唯一索引,且不使用 REF IS 子句中的 UNCHECKED 选项,或者
- 与在子视图中同一层次结构上的分支中的表达式不全等。
- 4
- 子视图分支所涵盖的表或视图不是超视图的任何分支中引用的表或视图的子表或子视图,且子视图使用 EXTEND AS,或根视图未打开 REF IS 子句中的 UNCHECKED 选项。
- 5
- 全查询包括对 NODENUMBER 或 PARTITION 函数、非确定性函数,或定义为具有外部操作的函数的引用。
- 6
- 如果超视图中的任何分支涵盖同一层次结构中的表或视图,而未使用 OUTER,那么子视图中的分支不能涵盖 OUTER 表或视图。
- 7
- 子视图的范围涵盖它自己的视图层次结构中的视图。
- 8
- 子视图在其定义中使用除 UNION ALL 之外的集合操作,或在定义中使用了 UNION ALL,但未在根视图的 REF IS 子句中指定 UNCHECKED 选项。
- 9
- 子视图包含两个 UNION ALL 的分支,它们涵盖同一表层次结构或视图层次结构。
- 10
- 子视图定义包含 GROUP BY 或 HAVING 子句。
用户响应
- 1
- 在 FROM 子句中只使用一个表或视图。使用根视图的 REF IS 子句的 UNCHECKED 选项将复杂选择包括到带类型视图可涵盖的视图中。
- 2
- 在每个分支的 FROM 子句中指定另一个表或视图(它与视图层次结构中已使用的表或视图不同),或使用一个谓词,它应明确定义:每个分支的行集与带类型视图层次结构中的其他分支的行集不同。
- 3
- 确保根视图的第一列符合规则,它才能成为带类型视图的有效对象标识列。考虑在 REF IS 子句中使用 UNCHECKED 选项。
- 4
- 指定在超视图的分支的 FROM 子句中指定的表或视图的子表或子视图。或将根视图定义中的 UNCHECKED 选项与子视图定义中的 AS(不带 EXTEND)子句配合使用。
- 5
- 从全查询中除去对函数的引用。
- 6
- 如果这是在此层次结构上的分支中第一个使用 OUTER 的子视图,那么更改 FROM 子句,以便不使用 OUTER。如果超视图使用 OUTER,那么将 OUTER 包括在子视图的 FROM 子句中。
- 7
- 不要从同一层次结构中的其他视图生成子视图。
- 8
- 如果使用了 UNION ALL,那么在根视图的 REF IS 子句中使用 UNCHECKED 选项,以允许子视图定义中有多个分支。对于其他集合操作,将集合操作封装到一个视图中,并在子视图中使用 UNCHECKED 选项来允许从公共视图生成子视图。
- 9
- 将分支统一为在其公共超表或超视图上的选择,并使用谓词(例如,类型谓词)来过滤出期望的行。
- 10
- 将 GROUP BY 和 HAVING 子句封装到视图中,并在根视图中使用 UNCHECKED 选项来允许从公共视图生成子视图。
sqlcode:-20053
sqlstate:428EA
SQL20054N 未执行操作,因为表处于该操作对其无效的状态。表名:表名。原因码:原因码。
说明
该表所处的状态不允许执行该操作。原因码指示禁止该操作的表状态。
- 21
表的状态为“Datalink 协调暂挂”(DRP) 或“Datalink 协调不可能”(DRNP)。
- 22
不能添加或改变生成列表达式,因为该表未采用检查暂挂方式。
- 23
执行的 REORG 建议的改变操作已达到最大数目。在必须执行重组以将表行更新为与当前模式匹配之前,允许对表执行多达三项 REORG 建议的操作。
- 24
不允许在同一个工作单元中同时执行以下两项操作:1) 对 LOB 或 LONG 列执行带有 ADD COLUMN 子句的 ALTER TABLE 语句;2) 对此表中的最后一个 LOB 或 LONG 列执行带有 DROP COLUMN 子句的 ALTER TABLE 语句。
此外,在数据库服务器 V9.7 和更高版本上,不允许在同一个工作单元中同时执行以下两项操作:1) 对 XML 列执行带有 ADD COLUMN 子句的 ALTER TABLE 语句;2) 对表中的最后一个 XML 列执行带有 DROP COLUMN 子句的 ALTER TABLE 语句。
- 25
表处于“设置完整性暂挂”状态。
- 26
不允许对当前正在重新分发其数据库分区组的表执行 ALTER TABLE ... ATTACH PARTITION 或 ALTER TABLE ... DETACH PARTITION 语句。
- 27
改变表或复制模式操作调用了内部过程来管理数据库对象。该过程使用的 SYSTOOLS.DB2LOOK_INFO 表所处状态对于改变或复制操作而言是无效的。SYSTOOLS.DB2LOOK_INFO 表的版本可能比较旧,或者与该过程所需的表完全不同。
- 29
由于此表的某个分区处于下列三种状态中的某种状态,因此不允许执行要将表清空或者截断的操作:
- 已连接,但尚未检查完整性(SYSCAT.DATAPARTITIONS.STATUS = 'A')。
- 已拆离分区,并且存在需要根据这些已拆离的分区以增量方式进行维护的从属表(SYSCAT.DATAPARTITIONS.STATUS = 'D')。
- 已拆离分区暂挂索引清除(SYSCAT.DATAPARTITIONS.STATUS = 'I')。
- 30
在下列三个条件成立的情况下,无法重新启动 LOAD 操作:
- LOAD 操作在 BUILD、DELETE 或 INDEX COPY 阶段失败
- 目标表包含 XML 列
- 下列其中一个条件也成立:
- 该表包含对 XML 列定义的唯一索引
- 在原始 LOAD 命令中指定了 ALLOW READ ACCESS
- 指定了 COPY YES
- 43
此分区表已与从属表拆离,不能支持创建分区索引。
- 44
此表是 ALTER TABLE 语句的连接分区操作的源表,并且,此表由于 MDC 转出操作而具有进行中的延迟索引清除操作。由于分区索引不支持使用延迟索引清除机制的 MDC 转出操作,因此,如果源表有任何在连接操作期间将被保留而不是被重建的 RID 索引,并且存在已转出块的暂挂异步索引清除操作,那么不允许执行连接操作。
- 49
ALTER TABLE 语句针对已更改的列指定 SET DATA TYPE,并且 REORG 在该表上处于暂挂状态。
- 50
无法对表执行该操作,因为当前正在后台进程中为表创建字典。
用户响应
根据原因码对此错误作出响应:
- 21
请参阅《管理指南》中有关“Datalink 协调暂挂”(DRP) 和“Datalink 协调不可能”(DRNP) 状态的信息,以执行适当的操作。
- 22
在改变该表之前使用 SET INTEGRITY FOR 表名 OFF。然后改变表并使用 SET INTEGRITY FOR 表名 IMMEDIATE CHECKED FORCE GENERATED 来为新列或已改变的列生成值。
- 23
使用 REORG TABLE 命令对表进行重组。
- 24
完成已删除最后一个 LOB、LONG 或 XML 列的工作单元,然后重新发出该命令。
- 25
通过使用带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句使表脱离“设置完整性暂挂”状态,然后再次执行该操作。
- 26
等待完成 REDISTRIBUTE DATABASE PARTITION GROUP 命令,然后重新发出 ALTER TABLE 语句。
- 27
将 SYSTOOLS.DB2LOOK_INFO 表重命名或废弃。内部过程将创建正确版本的 SYSTOOLS.DB2LOOK_INFO 表。重新提交改变表或复制模式操作。
- 29
根据阻塞操作的表分区所处状态的不同,执行适当的操作,然后再次发出该命令:
- SYSCAT.DATAPARTITIONS.STATUS = 'A':对带有相连接分区的表执行带有 IMMEDIATE CHECKED 或 IMMEDIATE UNCHECKED 选项的 SET INTEGRITY 语句
- SYSCAT.DATAPARTITIONS.STATUS = 'D':对于仍需要根据已拆离分区以递增方式进行维护的表的从属即时具体化查询表和登台表,执行带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句。查询 SYSCAT.TABDETACHEDDEP 目录视图以找到这些已拆离的从属表。
- SYSCAT.DATAPARTITIONS.STATUS = 'I':等待已拆离分区的索引清除操作完成。请查询 SYSIBM.SYSTASKS 以确定进度。
- 30
通过执行下列步骤,对原因码 30 作出响应:
- 使用 LOAD TERMINATE 命令将表的状态从“正在装入”更改为“正常”。
- 重新运行原始的 LOAD 命令。
- 43
使用带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句来维护从属表,然后创建分区索引。
- 44
等待对源表执行的延迟索引清除操作完成,然后重新发出 ALTER TABLE 语句以连接该分区。要监视转出清除操作的进度,请使用 LIST UTILITIES 命令。
- 49
如果尝试的数据类型更改与暂挂的数据类型更改位于同一工作单元中,请回滚暂挂的更改,然后重新发出 ALTER TABLE 语句。否则,请使用 REORG TABLE 命令对表进行重组,然后再次尝试数据类型更改。
- 50
等待正在为表创建字典的后台进程完成,然后重新发出该命令。
sqlcode:-20054
sqlstate:55019
SQL20055N 选择列表中的结果列数据类型与对列 列名 定义的数据类型不兼容。
说明
与 列名 对应的选择列表表达式的数据类型不可赋予结构化类型的属性的数据类型。
用户响应
请检查该表的当前定义及相关联的结构化类型。确保所指定列的选择列表表达式数据类型是可赋予结构化类型的属性的数据类型。
sqlcode:-20055
sqlstate:42854
SQL20056N DB2 Data Links Manager 名称 上的处理遇到错误。原因码:原因码。
说明
- 01
- 检测到 DB2 Data Links Manager 上的数据与表中的 DATALINK 值不一致。
- 02
- 在处理期间,DB2 Data Links Manager 达到资源限制。
- 03
- DB2 Data Links Manager 不支持长于 128 个字符的文件路径名。
- 99
- DB2 Data Links Manager 遇到内部处理错误。
无法处理该语句。
用户响应
- 01
- 对表运行 Reconcile 实用程序。
- 02
- DB2 Data Links Manager 管理员应标识诊断日志中的资源,并执行更正操作。
- 03
- 应确保要存储在 DATALINK 列中的文件路径名(不包括文件系统前缀)不超过 128 个字符。例如,在 URL "http://server.com/dlfiles/dir1/.../file1" - 假定 DLFS 文件系统前缀是 "/dlfiles" - 中,文件路径名 "/dir1/.../file1" 不能超过 128 个字符。
- 99
- 保存来自 DB2 Data Links Manager 和数据库管理器的诊断日志,并与 IBM 服务中心联系。
sqlcode:-20056
sqlstate:58004
SQL20057N 当超视图中相应的列可更新时,不能将超视图 视图名 中的列 列名 定义为只读。
说明
子视图 视图名 中由 列名 标识的列(隐式地)定义为只读的。视图名 的超视图包括相应的可更新的列。不能在类型视图层次结构中将列由可更新更改为只读。
无法处理该语句。
用户响应
更改 CREATE VIEW 语句以使子视图 视图名 的列是可更新的,或删除超视图并使用 READ ONLY 子句重新创建这些超视图,以将列强制为只读的。
sqlcode:-20057
sqlstate:428EB
SQL20058N 语句失败,因为对具体化查询表 表名 指定的全查询违反了限制。原因码:原因码。
说明
限制适用于具体化查询表的定义中所使用全查询的内容。一些限制基于具体化查询表选项,例如 REFRESH DEFERRED 或 REFRESH IMMEDIATE。其他限制基于表是否为复制型表。返回此状况的语句中的全查询至少违反了其中一个限制。
如果在创建登台表期间返回此消息,那么该错误适用于与登台表相关联的具体化查询表的定义中所使用的查询。
原因码指示违反的限制:
- 1
一个或多个查询列表元素没有名称。
- 2
全查询引用了不受支持的对象类型。
- 3
全查询包含数据类型不受支持的列引用或表达式。
- 4
全查询包含的列引用、表达式或函数违反了一个或多个限制。
- 5
REPLICATED 选项违反了限制。
- 6
指定 REFRESH IMMEDIATE 时,全查询违反了限制。
- 7
REFRESH IMMEDIATE 选项违反了限制。
- 8
当全查询包含 GROUP BY 子句,且违反了限制时,指定了 REFRESH IMMEDIATE 选项。
- 9
指定了 REFRESH IMMEDIATE 选项,且全查询不是子查询。
- 10
FROM 子句引用了多个表,指定了 REFRESH IMMEDIATE 选项或 MAINTAINED BY REPLICATION 选项。
- 11
指定了 REFRESH IMMEDIATE 选项,且 UNION ALL 或 JOIN 的输入表表达式包含一个或多个聚集函数。
- 12
具体化查询表的增量维护所需的空间超出了数据库中当前可用的最大系统临时表空间。
- 13
全查询包含 CONNECT BY 子句。
- 14
在 CREATE TABLE 语句中指定了 MAINTAINED BY FEDERATED_TOOL,且查询子句包含对基本表的引用。
- 15
尝试了以下列其中一种方式来创建 MQT:
- 按列组织的 MQT 未定义为 MAINTAINED BY REPLICATION,但引用了按行组织的表
- 按列组织的 MQT 未指定 ORGANIZE BY COLUMN 子句
- 按行组织的 MQT 引用了按列组织的表
- 16
尝试了以下列其中一种方式来创建按列组织的具体化查询表 (MQT):
- 不指定 MAINTAINED BY USER 子句
- 不指定 MAINTAINED BY REPLICATION 子句
- 通过指定 MAINTAINED BY SYSTEM 子句而不指定 REFRESH DEFERRED 和 DISTRIBUTE BY REPLICATION 子句
- 通过指定 REFRESH IMMEDIATE 子句
- 17
指定了 MAINTAINED BY REPLICATION 子句来创建影子表,但是全查询引用了违反限制或缺少影子表需求的表。
- 18
指定了 MAINTAINED BY REPLICATION 子句来创建影子表,但是全查询引用了违反限制或缺少影子表需求的列。
- 19
指定了 MAINTAINED BY REPLICATION 子句来创建影子表,但是全查询包括了不支持创建影子表的表达式或子句。
- 20
指定了 MAINTAINED BY REPLICATION 子句来创建影子表,但影子表的列的名称与基本表的所选列的名称不精确匹配。
用户响应
根据原因码作出的响应为:
- 1
确保所有元素都有名称。可以使用 AS 子句来命名表达式,或对具体化查询表定义的列列表中的所有列进行显式命名。
- 2
勿引用不受支持的对象。
- 3
勿引用不受支持的列或表达式类型。
- 4
勿引用不受支持的列、表达式或函数。
- 5
将具体化查询表创建为非复制型表。或者更正语句,让查询引用单个表,且不包含子查询、聚集或 PARTITIONING 子句。
- 6
将具体化查询表创建为 REFRESH DEFERRED,或者执行下列操作:
- 移除昵称引用。
- 移除 DISTINCT。
- 移除专用寄存器以及依赖于专用寄存器值的内置函数。
- 移除非确定函数或将其替换为确定性函数。
- 移除所有 OLAP 函数、采样函数和文本函数。
- 从表达式中移除聚集函数或将表达式更改为对聚集函数的简单引用。
- 移除聚集函数或添加 GROUP BY 子句。
- 更正 CREATE TABLE 语句以确保未引用递归公共表表达式。
- 移除子查询。
- 7
将具体化查询表创建为 REFRESH DEFERRED,或者执行下列操作:
- 更正 CREATE TABLE 语句以确保所有 GROUP BY 项目都在查询列表中。
- 更正 GROUP BY 子句以确保没有重复的分组集合。
- 在查询列表中移除可空列 C 或添加 GROUPING(C)。
- 更正 CREATE TABLE 语句以确保查询中所引用每个表内的至少一个唯一键出现在查询列表中。
- 8
将具体化查询表创建为 REFRESH DEFERRED,或者执行下列操作:
- 将 COUNT(*) 或 COUNT_BIG(*) 添加到查询列表或移除 GROUP BY 子句。
- 将 COUNT(*) 添加到查询列表或移除 SUM(C),或者将列 C 改变为不可空。
- 移除不受支持的聚集函数或将它们替换为受支持的函数。
- 移除 HAVING 子句。
- 更正 CREATE TABLE 语句以确保 GROUP BY 子句包含所有分区键列。
- 9
将具体化查询表创建为 REFRESH DEFERRED,或者将表定义更改为子查询或 GROUP BY 的输入表表达式中的 UNION ALL。
- 10
通过下列其中一种方式对原因码 10 作出响应:
- 如果指定了 REFRESH IMMEDIATE 并且 FROM 子句使用了显式 INNER JOIN 语法,请更改 FROM 子句以引用单个表,或者用隐式内连接语法替换显式 INNER JOIN 语法。
- 如果指定了 REFRESH IMMEDIATE,请使用 REFRESH DEFERRED 替换它。
- 如果指定了 MAINTAINED BY REPLICATION,请更改 FROM 子句以引用单个表。
- 11
将具体化查询表创建为 REFRESH DEFERRED,或从 UNION ALL 或 JOIN 的输入表中移除聚集函数。
- 12
将具体化查询表创建为 REFRESH DEFERRED,或者减小 MQT 的总行宽或减少列数。创建具有合适页大小的系统临时表空间。
- 13
确保全查询不包含 CONNECT BY 子句。分层查询不能用来创建具体化查询表。
- 14
重写 CREATE TABLE 语句,让查询子句不包含对基本表的引用。
- 15
确保按列组织的 MQT 仅引用按列组织的表,或者指定 MAINTAINED BY REPLICATION 或 ORGANIZE BY COLUMN。并确保按行组织的 MQT 仅引用按行组织的表。然后重新发出该语句。
- 16
确保该语句包含下列其中一个子句,然后重新发出该语句。
- MAINTAINED BY USER
- MAINTAINED BY REPLICATION
- MAINTAINED BY SYSTEM,带有 REFRESH DEFERRED 和 DISTRIBUTE BY REPLICATION 子句
- REFRESH DEFERRED,而不是 REFRESH IMMEDIATE
- 17
要基于指定的基本表创建影子表,请变更指定的基本表,以便支持将此表作为影子表的基本表。
- 18
要基于指定的基本表创建影子表,请在全查询中包含不同列,或者确保指定的列满足所有需求。
- 19
修改全查询以满足创建影子表的需求。
- 20
定义影子表,以便影子表的列的名称与基本表的所选列的名称精确匹配。
sqlcode:-20058
sqlstate:428EC
SQL20059W 可能不能使用具体化查询表 表名 来优化查询处理。
说明
该具体化查询表是用 REFRESH DEFERRED 和全查询定义的,当优化对查询的处理时,数据库管理器当前不支持该全查询。规则基于具体化查询表选项(REFRESH DEFERRED 或 REFRESH IMMEDIATE)。返回此状态的 CREATE TABLE 语句中的全查询至少违反了 SQL Reference 中描述的其中一条规则。
成功创建了具体化查询表,但是该表将只被路由至直接引用该具体化查询表的查询。
用户响应
不需要执行任何操作。但是,如果具体化查询打算优化不直接引用此具体化查询表的查询的处理,那么可以按如下所示来实现。使用为 表名 指定的全查询来创建视图,然后使用一个只是在视图中执行“SELECT *”的全查询来重新创建具体化查询表 表名。这样,就可以将具体化查询表路由至引用此视图的查询。
sqlcode: +20059
sqlstate:01633
SQL20060N 表空间标识 中的表 表标识 的索引 索引标识 的索引扩展名使用的密钥变换表函数生成了重复的行。
说明
由索引 索引标识 所使用的索引扩展中的 GENERATE USING 子句指定的键变换表函数生成了重复的行。对于键变换表函数的给定调用,不应该生成重复的行。当插入或更新表空间 表空间标识 中的表 表标识 的索引 索引标识 的键值时,发生了此错误。
无法处理该语句。
用户响应
必须修改索引 索引标识 的索引扩展所使用的键变换表函数的代码,以避免创建重复的行。
SELECT IID, INDSCHEMA, INDNAME
FROM SYSCAT.INDEXES AS I,
SYSCAT.TABLES AS T
WHERE IID = <index-id>
AND TABLEID = <table-id>
AND TBSPACEID = <tbspace-id>
AND T.TBASCHEMA = I.TABSCHEMA
AND T.TABNAME = I.TABNAME
sqlcode:-20060
sqlstate:22526
SQL20062N 不能将类型为 类型名 的变换组 组名 中的变换函数 变换类型 用于函数或方法。
说明
不能将在变换组 组名 中为类型 类型名 定义的变换函数用于函数或方法,因为变换函数不是用 SQL(用 LANGUAGE SQL 定义的)编写的。不能将变换组用于此函数或方法。
无法处理该语句。
用户响应
对具有用 LANGUAGE SQL 定义的变换函数的类型 类型名 指定变换组。
sqlcode:-20062
sqlstate:428EL
SQL20063N 必须对类型 类型名 指定 TRANSFORM GROUP 子句。
说明
函数或方法包括一个参数,或返回未指定变换组的数据类型 类型名。
无法处理该语句。
用户响应
指定一个带有对 类型名 定义的变换组名的 TRANSFORM GROUP 子句。
sqlcode:-20063
sqlstate:428EM
SQL20064N 变换组 组名 不支持任何指定为 参数的数据类型或返回的数据类型。
说明
未对包含在参数列表或者函数或方法的 RETURNS 子句中的任何数据类型定义在 TRANSFORM GROUP 子句中指定的变换组 组名。
无法处理该语句。
用户响应
从函数或方法定义中除去该变换组。
sqlcode:-20064
sqlstate:428EN
SQL20065N 数据类型 类型名 的变换组 组名 不能用来变换结构化类型以配合客户机应用程序使用。
说明
- 作为 ROW 函数的 FROM SQL 函数
- 具有多个参数的 TO SQL 函数
无法处理该语句。
用户响应
对于静态嵌入式 SQL,使用 TRANSFORM GROUP 绑定选项指定另外一个变换组。 对于动态 SQL,使用 SET DEFAULT TRANSFORM GROUP 语句指定另外一个变换组。
sqlcode:-20065
SQL20066N 在变换组 组名 中没有对数据类型 类型名 定义 变换类型 变换函数。
说明
对于函数或方法定义中所使用的变换组而言,数据类型为 类型名 的变换组 组名 的 变换类型 变换函数是必需的。
无法处理该语句。
用户响应
如果正在创建函数或方法,那么在函数或方法定义中指定另一个变换组。如果正在动态 SQL 语句中引用结构化类型,那么为 CURRENT DEFAULT TRANSFORM GROUP 专用寄存器指定另一个变换组。另外,将 变换类型 变换函数添加到数据类型为 类型名 的变换组 组名 中。
sqlcode:-20066
sqlstate:42744
SQL20067N 在变换组 组名 中对数据类型 类型名 多次定义了 变换类型 变换函数。
说明
在变换组中,TO SQL 或 FROM SQL 变换函数只能指定一次。数据类型为 类型名 的变换组 组名 至少定义了两个 FROM SQL 和/或 TO SQL 变换函数。
无法处理该语句。
用户响应
从变换定义的 组名 中删除 TO SQL 或 FROM SQL 定义,以便使每个组只有一个定义。
sqlcode:-20067
sqlstate:42628
SQL20068N 可能未定义结构化类型 类型名,因此,它的其中一种属性类型直接或间接使用它本身。属性 属性名 导致直接或间接使用。
说明
- 类型 A 具有类型 B 的属性
- 类型 B 是 A 的子类型,或者是 A 的超类型。
- 类型 A 使用类型 C,而类型 C 又使用类型 B。
不能定义这样的类型,它的其中一种属性类型直接或间接使用它本身。属性 属性名 的类型是导致直接或间接使用的原因。
用户响应
评估该类型,并除去导致直接或间接使用的属性类型。
sqlcode:-20068
sqlstate:428EP
SQL20069N 例程类型 例程名 的 RETURNS 类型与主题类型不同。
说明
方法 方法名 指定了 SELF AS RESULT。方法的 RETURNS 数据类型必须与方法的主题数据类型相同。
用户响应
更改方法 方法名 的 RETURNS 类型以与主题类型匹配。
sqlcode:-20069
sqlstate:428EQ
SQL20075N 不能创建或改变索引或索引扩展名 索引名,因为 列名 的长度大于 255 字节。
说明
因为键列长度大于 255,所以未能创建或改变索引。
- 索引名 是索引名。
- 列名 是键列的名称。如果从 ALTER TABLE 或 ALTER NICKNAME 操作返回此错误,那么 列名 的值就是列号。
未能创建索引扩展,原因是 GENERATE KEY 函数返回超过 255 字节的列。
- 索引名 是索引扩展名。
- 列名 是由 GENERATE KEY 函数返回的列名。
未能处理该语句。未创建指定的索引或索引扩展,或者未能改变表或昵称。
用户响应
如果正在创建索引,那么从索引定义中消除列。如果正在改变表,那么将新的列长度缩短为允许的最大值。如果正在创建索引扩展,那么指定另一 GENERATE KEY 函数,或者重新定义该函数以除去该列。
sqlcode:-20075
sqlstate:54008
SQL20076N 未对指定的操作启用数据库实例。原因码:原因码。
说明
在实例级别检测到错误。因为未安装指定的功能区,或未对实例启用指定的功能区,所以请求的操作不能完成。
以下是原因码以及您可在实例级别启用的相关功能区的列表:
- 对单一语句中的多个数据源执行分布式请求操作的能力。
用户响应
对请求的操作启用实例。首先,安装指定的功能区(如果它丢失)。然后,启用指定的功能区。启用步骤视 原因码 的不同而有所变化:
- 对于联合服务器,将 DBM 变量 <FEDERATED> 设置为 YES,然后重新启动数据库管理器。
sqlcode:-20076
sqlstate:0A502
SQL20077N 不能构造具有 Datalink 类型属性的结构化类型对象。
说明
尝试调用具有 Datalink 和/或“引用”类型属性的结构化类型的构造函数。当前不支持此功能。 在版本 6.1 或更早的版本中,对于具有“引用”类型属性的结构化类型对象也可能会发生此错误。
无法处理该语句。
用户响应
可通过执行下列其中一项操作来更正此错误:
- 从程序中除去该类型的构造函数的调用。
- 从结构化类型的定义中除去任何 Datalink(或“引用”)类型属性 (如果有任何依赖于此类型的表,那么此方法不可行)。
sqlcode:-20077
sqlstate:428ED
SQL20078N 不能使用操作 操作类型 处理类型为 对象类型 的层次结构对象 对象名。
说明
操作 操作类型 尝试使用名为 对象名,类型为 对象类型 的层次结构对象。此操作不支持层次结构对象的处理。
未能处理该语句。
用户响应
验证是否使用了正确的对象名。对于对象类型 TABLE 或 VIEW,该对象必须是表或视图层次结构中的子表的名称。在某些情况下,对象必须明确地命名根表。对于索引类型的对象,该名称必须是在子表上创建的索引的名称。
sqlcode:-20078
sqlstate:42858
SQL20080N 不能删除 方法名 的方法规范,因为存在方法主体。
说明
在可以删除方法规范 方法名 之前,必须先删除现有的方法主体。
无法处理该语句。
用户响应
将 DROP METHOD 语句配合同一方法规范使用以删除方法主体,然后再次发出 ALTER TYPE 语句以删除该方法规范。
sqlcode:-20080
sqlstate:428ER
SQL20081N 不能对 LANGUAGE 语言类型 方法规范 方法名 定义方法主体。
说明
方法规范 方法名 是用 LANGUAGE 语言类型 定义的。 如果 LANGUAGE 为 SQL,那么方法主体必须是 SQL 控制语句。 对于其他语言,必须指定 EXTERNAL 子句。
无法处理该语句。
用户响应
更改方法主体以便与方法规范中指定的 LANGUAGE 匹配。
sqlcode:-20081
sqlstate:428ES
SQL20082N 表达式的动态类型 表达式类型标识 在 TREAT 规范中不是目标数据类型 目标类型标识 的子类型。
说明
在 TREAT 规范中指定的表达式结果的动态数据类型为 表达式类型标识。指定的目标数据类型 目标类型标识 是 表达式类型标识 的正确子类型,它是不允许的。
无法处理该语句。
用户响应
将 TREAT 规范的 目标类型标识 更改为 表达式类型标识 的超类型,或者更改表达式,以使结果的动态数据类型是 目标类型标识 的子类型。
SELECT TYPEID, TYPESCHEMA, TYPENAME
FROM SYSCAT.DATATYPES
WHERE TYPEID IN INTEGER(
expression-type-id),
INTEGER(
target-type-id
)
)sqlcode:-20082
sqlstate:0D000
SQL20083N 由 例程类型 例程标识 返回的值的数据类型与指定为 RESULT 的数据类型不匹配。
说明
方法 例程标识 指定了 SELF AS RESULT,因此,要求返回值的数据类型必须与用来调用该方法的主题数据类型相同。在 SQL 方法主体或用于外部方法的类型的 TO SQL 变换函数中的 RETURN 语句导致了不正确的数据类型。
无法处理该语句。
用户响应
更改方法或变换函数的 RETURN 语句,以确保返回值的数据类型一直是用来调用该方法的主题类型。
SELECT FUNCSCHEMA, FUNCNAME,
SPECIFICNAME
FROM SYSCAT.FUNCTIONS
WHERE FUNCID = INTEGER(
routine-id
)sqlcode:-20083
sqlstate:2200G
SQL20084N 例程类型 例程名 将用现有方法来定义覆盖关系。
说明
- MT 和 MS 具有相同的非限定名和相同的参数个数。
- T 是 S 的正确子类型。
- 非主题参数类型 MT 与相应的非主题参数类型 MS 相同。(这里,“相同”适用于基本类型,例如 VARCHAR,无论长度和精度)。
函数和方法可能未处于覆盖关系。这就意味着,如果函数是一种方法(该方法将其第一个参数作为主题 S),那么该函数不能覆盖 S 的任何超类型的另一种方法,并且它也不能被 S 的任何子类型的另一种方法覆盖。
- 表和行方法
- 带有 PARAMETER STYLE JAVA 的外部方法
- 系统生成的 mutator 方法和观察器方法
无法处理该语句。
用户响应
更改正在定义的例程,以便使用另一个不同于 例程名 的例程名,或者更改该例程的参数。
sqlcode:-20084
sqlstate:42745
SQL20085N 用 PARAMETER STYLE JAVA 定义的例程 不能具有作为参数类型或返回类型的结构化类型 类型名。
说明
例程是用 PARAMETER STYLE JAVA 定义的,而其中一种参数类型或返回类型是使用结构化类型 类型名 定义的。 这不受此版本的 DB2 的支持。
无法处理该语句。
用户响应
更改为例程的另一种参数样式,或者从例程定义中除去该结构化类型。
sqlcode:-20085
sqlstate:429B8
SQL20086N 列的结构化类型值的长度超过了系统限制。
说明
结构化类型列值的大小总体上超过了 1 千兆字节,其中包括实例的描述符数据在内。该列可以是被直接插入或更新的列,或者,它可以是生成的列。
无法处理该语句。
用户响应
减小分配给该列的结构化类型值的大小。
sqlcode:-20086
sqlstate:54049
SQL20087N 在属性赋值中不能使用 DEFAULT 或 NULL。
说明
UPDATE 语句正在使用属性赋值来设置结构化类型列中的属性的值。这种格式的赋值语句不允许将关键字 DEFAULT 或关键字 NULL 用作右边的赋值。
无法处理该语句。
用户响应
为属性赋值的右边指定一个表达式,或者更改该赋值,因此它没有使用属性赋值语法。
sqlcode:-20087
sqlstate:428B9
SQL20089N 在同一类型层次结构中,方法名不能与结构化类型名相同。
说明
指定方法名与为结构化类型的超类型或子类型之一定义的结构化类型相同。
无法处理该语句。
用户响应
为该方法指定另一个名称。
sqlcode:-20089
sqlstate:42746
SQL20090W 使用具有类型 DATALINK 的属性 属性名 的结构化类型被有效地限制为类型表或类型视图的类型。
说明
属性 属性名 是用类型 DATALINK 或基于 DATALINK 的单值类型来定义的。 包括这种属性的结构化类型只能用作表或视图的类型。如果用作表或视图的列的类型,那么仅能指定给它空值。
该语句继续处理。
用户响应
考虑结构化类型的期望使用。如果该类型将用作列数据类型,那么从结构化类型中除去属性 属性名,或者对该属性使用不同于 DATALINK 的数据类型。
sqlcode:+20090
sqlstate:01641
SQL20092N 此语句失败,因为在此上下文中无法使用在 LIKE 子句中指定的表或视图。
说明
CREATE GLOBAL TEMPORARY TABLE 语句或 DECLARE GLOBAL TEMPORARY TABLE 语句的 LIKE 子句指定了一个表名,而此表中具有定义为 IMPLICITLY HIDDEN 的列。由于已创建的临时表和已声明临时表不支持 IMPLICITLY HIDDEN 属性,因此无法在 LIKE 子句中指定此表。
用户响应
请指定未使用隐式隐藏列定义的表的名称。
要指定其中包括定义为 IMPLICITLY HIDDEN 的列的已创建临时表或已声明临时表,请使用 AS(全查询)选项来指定此表中的这些列。因此,未将 IMPLICITLY HIDDEN 属性复制至所定义的列。
sqlcode:-20092
sqlstate:560AE
SQL20093N 表 表名 不能与具体化查询表互相转换。原因码:原因码。
说明
正在使用 ALTER TABLE 语句来将表从具体化查询表更改为 DEFINITION ONLY,或者将常规表转换为具体化查询表。ALTER TABLE 语句失败,其原因由下列原因码指示:
- 1
该表是类型表或层次结构表。
- 2
该表不是具体化查询表,且指定的是 DEFINITION ONLY。
- 3
该表是复制型具体化查询表,且指定的是 DEFINITION ONLY。
- 4
该表至少定义了一个触发器。
- 5
该表至少定义了一个检查约束。
- 6
该表至少定义了一个唯一约束或唯一索引。
- 7
表至少定义了一个引用约束。
- 8
在现有的具体化查询表的定义中引用了该表。
- 9
在全查询中直接或间接(例如,通过视图)引用了该表。
- 10
该表已经是具体化查询表。
- 11
现有表的列数与在全查询的选择列表中定义的列数不匹配。
- 12
现有表的列数据类型与全查询的选择列表中的相应列不精确匹配。
- 13
现有表列的列名与全查询的选择列表中相应的列名不精确匹配。
- 14
现有表列的可空性特征与全查询的选择列表中相应列的可空性特征不精确匹配。
- 15
如果在同一 ALTER TABLE 语句中有其他任何表改变,那么不能执行转换。
- 16
在为进行查询优化而启用的现有视图的定义中引用了该表。
- 17
表是一个受保护的表。
- 18
全查询引用了一个不允许对其进行高速缓存的昵称。
- 19
此表是系统时间段时间表或者历史记录表。
- 20
此表具有由安全性管理员定义的许可权或掩码。
- 21
已尝试通过指定 MAINTAINED BY REPLICATION 子句将表转换为影子表,但是无法将该表转换为影子表,因为该表是按行组织的。
- 22
已尝试通过指定 MAINTAINED BY REPLICATION 子句将表转换为影子表,但是无法将该表转换为影子表,因为该表具有不同于主键的唯一约束或索引,或者主键定义为 NOT ENFORCED。
用户响应
根据原因码作出的响应为:
- 1
表不能转换为具体化查询表。而是创建新的具体化查询表。
- 2
不需要转换此表。不需要执行任何操作。
- 3
复制型表只能是具体化查询表。创建一个新表。
- 4
删除任何触发器,并再次尝试 ALTER TABLE 语句。
- 5
删除任何检查约束,并再次尝试 ALTER TABLE 语句。
- 6
删除任何唯一约束和唯一索引。再次尝试 ALTER TABLE 语句。
- 7
删除所有引用约束,并再次尝试 ALTER TABLE 语句。
- 8
删除引用该表的具体化查询表,并再次尝试 ALTER TABLE 语句。
- 9
具体化查询表不能引用它自己。修改全查询,以移除对正在改变的表的直接或间接引用。
- 10
不允许执行该操作,因为该表已经是具体化查询表。
- 11
修改全查询,以使选择列表中包括正确的列数。
- 12
修改全查询,以便使结果列数据类型与相应现有列的数据类型精确匹配。
- 13
修改全查询,以便使结果列名与相应现有列的列名精确匹配。
- 14
不能将该表转换为具体化查询表,除非可以匹配可空性特征。而是创建新的具体化查询表。
- 15
在不包括 SET MATERIALIZED QUERY AS 子句的 ALTER TABLE 语句中执行其他表改变。
- 16
禁用引用该表并为进行查询优化而启用的视图,并再次尝试 ALTER TABLE 语句。
- 17
移除对表的保护,或者不将该表转换为具体化查询表。
- 18
更正在 ALTER TABLE 语句中指定的全查询,以便使它不引用一个不允许对其进行高速缓存的昵称。
- 19
更正表名,以指定一个不是系统时间段时间表或历史记录表的表,或者使用指定了 DROP VERSIONING 子句的 ALTER TABLE 语句来改变系统时间段时间表。
- 20
移除许可权和掩码,或者不将该表转换为具体化查询表。
- 21
要将该表转换为影子表,请首先将该表转换为按列组织。
- 22
要将该表转换为影子表,请从表中移除不同于主键的所有唯一约束和索引,或将主键定义为 ENFORCED。
sqlcode:-20093
sqlstate:428EW
SQL20094N 该语句失败,因为 列名 列是一个生成列,或者是使用 DB2SECURITYLABEL 数据类型定义的并且无法用于 BEFORE 触发器 触发器名称。
说明
无法在 BEFORE UPDATE 触发器的列名列表中指定所指示的列,也无法在 BEFORE 触发器中设置此列,因为它是下列其中一项:
- “行开始”列
- “行结束”列
- “事务开始标识”列
- 所生成的表达式列
- 使用 DB2SECURITYLABEL 数据类型定义的列
无法处理该语句。
用户响应
从列名列表中除去此列,或者从用于设置生成列的新转换变量的 SET 赋值语句中除去此列,然后重新提交该语句。
sqlcode:-20094
sqlstate:42989
SQL20102N 例程 例程名 的 CREATE 或 ALTER 语句指定了对于该例程不允许的 选项名 选项。
说明
创建或改变例程 例程名 时指定了选项 选项名。由于例程的其他特征方面的原因,该选项不适用于例程。对于有源过程,只能指定 ALTER PARAMETER,并且 ALTER PARAMETER 只能对有源过程指定。
用户响应
对于 ALTER 语句,确保正在指定正确的例程。否则,除去失败的选项并重新发出语句。
sqlcode:-20102
sqlstate:42849
SQL20108N 结果集在由存储过程 过程名称 打开的游标 游标名 的位置 位置编号 中包含不受支持的数据类型。
说明
由“过程名称”命名的存储过程不能返回它的至少一个查询结果集(由“游标名”命名),原因是至少其中一个列(列“位置编号”)包含的数据类型不受 “DRDA 应用程序请求器”(客户机)或“DRDA 应用程序服务器”(服务器)支持。因此,对存储过程的调用失败。
用户响应
修改服务器上存储过程“过程名称”中游标“游标名”的 OPEN 语句(以及后续的 FETCH 语句),以便不在列“位置编号”中选择不受支持的数据类型。可能需要修改调用该存储过程的客户机应用程序以反映存储过程中的更改。
sqlcode:-20108
sqlstate:56084
SQL20109W DB2 调试器支持出错。原因码:原因码。
说明
调试器支持存在错误状态,这将禁用调试,但不影响正常执行。下面是原因码列表:
- 未安装调试器支持。
- 调试器表中调试器客户机的 IP 地址中存在语法错误。
- 调试器后端与调试器客户机之间的通信发生超时。
- 访问调试器表 DB2DBG.ROUTINE_DEBUG 时发生问题。
用户响应
- 验证是否在数据库服务器上安装了调试器选项。
- 确保调试器表中的 IP 地址的语法正确。
- 检查客户机上的调试器守护程序是否已启动,以及客户机与服务器上的端口是否匹配。
- 验证您是否已创建具有正确布局的调试器表。
sqlcode:+20109
sqlstate:01637
SQL20111N 在此上下文中不能发出 SAVEPOINT、RELEASE SAVEPOINT 或 ROLLBACK TO SAVEPOINT 语句。原因码:原因码。
说明
因为该语句违反下列原因码所指示的限制,所以不能对其进行处理:
- 不能在触发器内部发出保存点。
- 不能在全局事务内部发出保存点。
无法处理该语句。
用户响应
除去触发器或全局事务中的 SAVEPOINT、RELEASE SAVEPOINT 或 ROLLBACK TO SAVEPOINT 语句。
sqlcode:-20111
sqlstate:3B503
SQL20112N 无法设置保存点,因为已经存在保存点,而嵌套的保存点不受支持。
说明
保存点是一个指定的实体,表示工作单元中的数据和模式在特定时间点所处的状态。可以采用多种方式来使用保存点。例如,可以将数据库回滚到某个保存点。可以使用 SAVEPOINT 语句来设置事务中的保存点。在某些环境中,还可以在同一事务中设置多个保存点或嵌套保存点。
在 SAVEPOINT 语句或者原子复合 SQL 语句中,如果由于下列原因而发生了错误,就会返回此消息:
- 尝试设置嵌套的保存点,但是,此环境中已经存在保存点且嵌套的保存点在此环境中不受支持。
- 尝试对不支持嵌套的保存点的联合数据源设置嵌套的保存点。
用户响应
通过下列其中一种方式对此错误作出响应:
- 在尝试设置新的保存点之前释放现有保存点。
- 要重新建立现有保存点,请执行下列步骤:
- 使用 RELEASE SAVEPOINT 语句释放现有保存点。
- 使用 SAVEPOINT 语句重新创建此保存点。
- 对于原子复合 SQL 语句:在此复合语句结束之后才设置保存点。
sqlcode:-20112
sqlstate:3B002
SQL20113N 不能从用 SELF AS RESULT 定义的方法 方法标识 中返回空值。
说明
用 SELF AS RESULT 定义了带有方法标识 方法标识 的方法。调用方法时使用了非空的结构化类型实例,因此,该方法不能返回空实例。
用户响应
SELECT FUNCSCHEMA, FUNCNAME,
SPECIFICNAME
FROM SYSCAT.FUNCTIONS
WHERE FUNCID = method-id
sqlcode:-20113
sqlstate:22004
SQL20114W 表 表名 中的列 列名 对于所定义的 USER 缺省值长度而言不够长。
说明
所定义的列 列名 的长度少于 128 字节。已对此列指定了子句 DEFAULT USER。由于 USER 专用寄存器被定义为 VARCHAR(128),因此用户标识比列长度长的用户对 表名 指定缺省值的任何尝试都将导致错误。用户标识比列长度长的用户将始终不能插入此列或将此列更新为缺省值。
用户响应
如果您的系统标准不允许用户标识超过该列的长度,那么可以忽略此警告。要防止发生此警告,该列的长度必须至少为 128 字节。可以通过删除表而后再次创建该表来更改列长度,或者,如果数据类型为 VARCHAR,那么可以通过使用 ALTER TABLE 来增大列长度。
sqlcode:+20114
sqlstate:01642
SQL20115N 例程类型 例程名 不能用作变换组 组名 中的 变换类型 变换函数。
说明
如果 例程类型 为 FUNCTION,那么 例程名称 定义的函数不能用作变换函数,因为它是内置函数。如果 例程类型 为 METHOD,那么 例程名称 定义的方法不能用作变换函数,因为 它是一个方法。
无法处理该语句。
用户响应
对变换组 组名 的 变换类型 变换函数指定另一个函数。
sqlcode:-20115
sqlstate:428EX
SQL20116N 搜索目标 参数名 的数据类型与索引扩展名 索引扩展名 中指定的源键的数据类型不匹配。
说明
如果搜索目标是内置数据类型或单值数据类型,那么其类型必须与索引扩展中指定的源键的数据类型精确匹配。如果搜索目标的数据类型是结构化类型,那么该结构化类型 必须与索引扩展中源键的数据类型处于同一结构化类型层次结构中。
无法处理该语句。
用户响应
指定一个搜索目标,其数据类型与索引扩展中源键的数据类型相匹配。
sqlcode:-20116
sqlstate:428EY
SQL20117N OLAP 函数的窗口规范无效。原因码:原因码。
说明
- 1
- 指定了 RANGE 或 ROWS,但窗口规范中没有 ORDER BY。
- 2
- 指定了 RANGE,而窗口 ORDER BY 子句包括多个排序键表达式。
- 3
- 指定了 RANGE,而范围值的数据类型不能用在某一减法表达式中,该减法表达式具有窗口 ORDER BY 子句中排序键表达式的数据类型。
- 4
- UNBOUNDED PRECEDING 是 CURRENT ROW 之后指定的,或者,UNBOUNDED FOLLOWING 是在 CURRENT ROW 之前指定的。
无法处理该语句。
用户响应
- 1
- 将窗口 ORDER BY 子句添加至指定了 RANGE 或 ROWS 的每个窗口规范。
- 2
- 确保包括 RANGE 的每个窗口规范在窗口 ORDER BY 子句中都正好有一个排序键表达式。
- 3
- 对于包括 RANGE 的每个窗口规范,确保可从窗口 ORDER BY 子句中的排序键表达式(它必须是数字类型或日期时间类型)中减去范围值。对于日期时间排序键表达式,范围值必须是具有正确精度和小数位的特定日期时间持续时间 DECIMAL 类型。
- 4
- 确保任何使用“BETWEEN”和“CURRENT ROW”的窗口规范在“AND CURRENT ROW”之前有“UNBOUNDED PRECEDING”,或者在“CURRENT ROW AND”之后有“UNBOUNDED FOLLOWING”。
sqlcode:-20117
sqlstate:428EZ
SQL20118N 结构化类型 类型名称 具有的属性数目多于允许的最大属性数目。最大值是 最大值。
说明
与结构化类型 类型名 的定义相对照,已超过所定义的每个结构化类型的允许最大属性数目(包括继承的属性)。最大属性数目(包括继承的属性)是 最大值。
无法处理该语句。
用户响应
确保结构化类型的属性数目不超过限制。
sqlcode:-20118
sqlstate:54050
SQL20119N ROW 函数必须至少定义两列。
说明
在 RETURNS 子句中指定 ROW 的函数必须包括一个至少有两列的列列表。
用户响应
或者从 RETURNS 子句中除去 ROW 关键字以使它成为标量函数,或者在 RETURNS 子句的列列表中指定多个列。
sqlcode:-20119
sqlstate:428F0
SQL20120N SQL TABLE 函数必须返回表结果。
说明
在 RETURNS 子句中指定 TABLE 的 SQL 函数返回的结果必须是表。标量表达式不能作为 SQL TABLE 函数的结果返回(标量全查询除外)。
用户响应
从 RETURNS 子句中除去 TABLE 关键字以使它成为标量函数,或者在 TABLE 函数体的 RETURN 语句中指定全查询。
sqlcode:-20120
sqlstate:428F1
SQL20121N 只能为游标 游标名 指定 WITH RETURN 或 SCROLL 两者之一。
说明
为游标 游标名 同时指定了 WITH RETURN 和 SCROLL,这是不允许的。
无法处理该语句。
用户响应
更改 DECLARE CURSOR 语句,以便指定 NO SCROLL(或者除去 SCROLL 关键字)或者除去 WITH RETURN 子句。
sqlcode:-20121
sqlstate:428F3
SQL20123N 由于为可滚动游标返回的结果集不在第一行前,因此对存储过程 过程 的调用失败。
说明
已经由对存储过程 过程 的调用(CALL)返回可滚动的结果集,并且一个或多个 游标不在第一行之前。
对存储过程的调用(CALL)未成功。在返回至调用方之前,在存储过程中定义的所有结果集游标都关闭了。不 能使用可滚动游标来从结果集中访存(FETCH)。未回滚存储过程完成的操作,并且由存储过程启动的 所有外部操作都已完成,因为错误是在存储过程执行结束时发现的。
用户响应
修改存储过程的内容,以确保返回至调用方之前结果集游标在第一行之前。
sqlcode:-20123
sqlstate:560B1
SQL20128N 游标 游标名 是可滚动的,但是结果表不能包括来自表函数的输出。
说明
游标 游标名 定义为可滚动的,但是结果表包括来自表函数的输出。不支持此组合。
无法处理该语句。
用户响应
修改游标的定义以使其为不可滚动的,或确保结果表不包括来自表函数的输出。
sqlcode:-20128
sqlstate:428F6
SQL20131N 在对象列表中,类型为 对象类型 的对象号 对象号 指定了多次。
说明
在类型为 对象类型 的对象名的列表中,编号为 对象号 的对象指定了多次。不能多次对该对象执行该语句的操作。
用户响应
更正列表中重复的对象,除去重复出现的那些对象。(在 MDC 情况下,对象类型将为“维”。)
sqlcode:-20131
sqlstate:42713
SQL20133N 无法对外部例程 例程名称 执行操作 操作名。只可对 SQL 例程执行该操作。
说明
您尝试对外部例程 例程名 执行操作 操作名。但是,您只能对 SQL 例程执行该操作。该操作未成功完成。
用户响应
确保您提供的名称标识的是 SQL 例程。
sqlcode:-20133
sqlstate:428F7
SQL20134N 无法在服务器上为例程 例程名 创建“SQL 归档”(SAR) 文件。
说明
为例程 例程名 创建 SQL 归档文件 (SAR) 失败,因为数据库管理器找不到所指定例程的库或绑定文件。仅为使用“DB2 V7.1 修订包 2”或更高版本创建的 SQL 例程提供了绑定文件。
用户响应
在带有“DB2 V7.1 修订包 2”或更高版本的服务器上再次重新创建该过程,然后再次尝试执行该操作。
sqlcode:-20134
sqlstate:55045
SQL20135N 指定的 SQL 归档与目标环境不匹配。原因码:原因码。
说明
- 1
- 目标环境的操作系统与创建 SQL 归档文件的操作系统不同。
- 2
- 目标环境的数据库类型和级别与创建 SQL 归档文件的数据库类型和级别不同。
用户响应
确保创建 SQL 归档文件的环境与目标环境相匹配,并重新发出该命令。如果环境不匹配,那么必须使用目标环境手动创建该 SQL 例程。
sqlcode:-20135
sqlstate:55046
SQL20136N 例程 例程名(特定名称为 特定名称)尝试访问联合对象。
说明
外部函数或方法中的 SQL 语句尝试访问一个或多个联合对象。此语句是从例程例程名(特定名称为特定名称)中执行的。当前不支持它从外部函数或方法中访问联合对象。
用户响应
从例程中除去对联合对象的引用。
sqlcode:-20136
sqlstate:55047
SQL20138N 可能不会说明该语句,因为没有将例程 例程名(特定名称 特定名称)定义为 MODIFIES SQL DATA。
说明
例程 例程名(特定名称 特定名称)定义为 CONTAINS SQL 或 READS SQL DATA,并尝试说明 SQL 语句。说明 SQL 语句需要写入说明表,仅在 MODIFIES SQL DATA 例程中才允许这样做。
用户响应
不要尝试通过定义为 CONTAINS SQL 或 READS SQL DATA 的例程说明 SQL 语句。
sqlcode:-20138
sqlstate:42985
SQL20139N 可能不会在例程 例程名(特定名称 特定名称)中发出 SQL 语句,因为先前的语句失败或中断。
说明
在例程 例程名(特定名称 特定名称)或嵌套例程执行期间,语句失败并需要回滚或发生中断。对所有调用自最外边的语句的例程需要完成执行,且将控制权传回 最外边的语句以便数据库管理器可以执行必要的恢复而言,这是非常必要的。在完成此恢复之前,不会 发出 SQL 语句。
用户响应
例程继续执行。例程不应执行任何其他 SQL 语句并应尽快将控制权返回给调用语句。
一旦所有的例程完成,数据库管理器将自动执行中断的初始故障的恢复。
sqlcode:-20139
sqlstate:51038
SQL20140W 忽略了 COMPRESS 列属性,因为对表取消激活了 VALUE COMPRESSION。
说明
- 忽略了为列指定的 COMPRESS SYSTEM DEFAULT,因为对表取消激活了 VALUE COMPRESS。
- 指定了 DEACTIVATED VALUE COMPRESSION,并利用 COMPRESS SYSTEM DEFAULT 定义了列。
用户响应
要允许为列指定 COMPRESS,改变(ALTER )表,并对表激活 VALUE COMPRESSION。
sqlcode:+20140
sqlstate:01648
SQL20142N 不能像指定的那样使用序列 序列名。
说明
在不能使用它的上下文中引用了 序列名。序列名 是系统生成的序列。它是为下列其中一种用途而生成的:
- 标识列。
- 使用随机依据生成方法的随机分发表的分发键。
不能在 DROP SEQUENCE、GRANT 或 REVOKE 语句或者在 NEXT VALUE 或 PREVIOUS VALUE 表达式中引用这些序列。
用户响应
指定此上下文中用户定义的序列对象的名称。
sqlcode:-20142
sqlstate:428FB
SQL20143N 加密或解密功能失败,因为未设置 ENCRYPTION PASSWORD 值。
说明
未设置 ENCRYPTION PASSWORD 值。
用户响应
发出 SET ENCRYPTION PASSWORD 语句来设置 ENCRYPTION PASSWORD 值。密码的长度必须最少为 6 字节,最多为 127 字节。
sqlcode:-20143
sqlstate:51039
SQL20144N 加密密码无效,因为指定的密码的长度少于 6 字节或者大于 127 字节。
说明
必须用长度在 6 到 127 字节之间的密码来将数据加密。
用户响应
确保密码长度在 6 和 127 之间。
sqlcode:-20144
sqlstate:428FC
SQL20145N 解密功能失败。用于解密的密码与加密数据时所使用的密码不匹配。
说明
必须使用与加密数据时所使用的同一密码来将数据解密。
用户响应
确保加密和解密数据时使用了相同的密码。
sqlcode:-20145
sqlstate:428FD
SQL20146N 解密功能失败。数据未加密。
说明
数据必须是 ENCRYPT 函数的结果。
用户响应
确保数据类型是 ENCRYPT 函数的结果。
sqlcode:-20146
sqlstate:428FE
SQL20147N ENCRYPT 函数失败。不支持多通道加密。
说明
已经加密的数据不能再次进行加密。
用户响应
确保数据尚未加密。
sqlcode:-20147
sqlstate:55048
SQL20148N 具有特定名称 特定名称 的例程 例程名 必须将 RETURN 语句作为复合主体的最后一个 SQL 语句。
说明
RETURN 语句必须是 SQL ROW 或 TABLE 函数中复合主体的最后一条 SQL 语句。在例程实体中不允许有其他 RETURN 语句。
用户响应
确保只有一个 RETURN 语句,并且它是复合主体的最后一条 SQL 语句。
sqlcode:-20148
sqlstate:429BD
SQL20149W 缓冲池操作已经完成,但是直到下一次数据库重新启动才会生效。
说明
已成功创建或改变缓冲池,但更改不会立即生效。当重新启动数据库时,更改才会生效。
- 指定了 DEFERRED 选项。
- 如果指定了改变且操作更改了 NUMBLOCKPAGES 或 BLOCKSIZE,请求是因为这些改变总是被延迟而延迟。
- 如果指定了改变,先前对基于块的区域进行的改变尚未生效(尚未重新启动数据库),且缓冲池的新建议大小小于缓冲池块区域的当前大小,那么必须延迟改变,以使它在对块区域的更改生效时生效。
用户响应
要使更改在下一次重新启动数据库时生效,不需要任何进一步的操作。
sqlcode:+20149
sqlstate:01649
SQL20150N 该语句失败,因为缓冲池的块页数对于缓冲池大小而言太大了。
说明
可通过使用基于块的缓冲池来优化顺序预取的性能。创建或改变缓冲池时,可使用 CREATE BUFFERPOOL 语句或 ALTER BUFFERPOOL 语句的 NUMBLOCKPAGES 子句来指定基于块的区域中应存在的页数。
指定为要在基于块的区域中存在的页数不得超过缓冲池总页数的 98%。如果尝试配置时指定要在基于块的区域中存在的页数超过基于块的缓冲池中的页数的 98%,那么会返回此消息。
用户响应
通过下列其中一种方式响应此消息:
- 通过将 NUMBLOCKPAGES 设置为零对此缓冲池禁用基于块的 I/O。
- 减少指定为要在基于块的区域中存在的页数:
- 通过检查 SYSCAT.BUFFERPOOLS 目录视图的 NPAGES 列来确定此缓冲池的总页数。
- 对 NUMBLOCKPAGES 指定不超过总页数的 98 % 的值。
sqlcode:-20150
sqlstate:54052
SQL20151N 为 BLOCKSIZE 指定的值不在有效范围内。
说明
BLOCKSIZE 值的有效范围是 2 到 256。
用户响应
将 BLOCKSIZE 的值更改为大于或等于 2 且小于或等于 256。最佳值为扩展数据块大小。
sqlcode:-20151
sqlstate:54053
SQL20152N 指定的缓冲池当前不是基于块的。
说明
使用 BLOCKSIZE 选项时,未指定在缓冲池的块区域中要使用的页数。
用户响应
为 NUMBLOCKPAGES 和 BLOCKSIZE 选项指定值。
sqlcode:-20152
sqlstate:428FF
SQL20153N 数据库的分割映像处于暂挂状态。
说明
当数据库分割映像处于暂挂状态时不能使用。
用户响应
要对此数据库分割映像继续执行 I/O 操作,请发出下列其中一个 db2inidb 命令:
- db2inidb <db-name> as mirror
- db2inidb <db-name> as snapshot
- db2inidb <db-name> as standby
在 DB2 pureScale 环境中,可以从任何成员发出此命令,并且只需发出此命令一次。
在分区数据库环境中,必须在每个数据库分区上执行 db2inidb 命令。可以在各个数据库分区上同时运行此命令。
sqlcode:-20153
sqlstate:55040
SQL20154N 因为不能对行确定任何目标表,所以不允许对视图 视图名 执行请求的插入或更新操作。原因码:原因码。
说明
指定的视图包含 UNION ALL 查询。原因码 指示所给定的行存在下列问题:
- 不满足任何基础基本表的检查约束,或者
- 满足多个基础基本表的所有检查约束。
联合系统用户:特定于其他的一些数据源的限制可以防止插入行。
用户响应
确保基础基本表用来对它们的行集进行分区的检查约束涵盖了将插入的行集。 另外,如果更新是将一些行从一个基础表移至另一个基础表,那么对于定义了对其还指定了 WITH ROW MOVEMENT 的全查询要执行 UNION ALL 的视图也要确保满足此条件。例如,假定 T1 的检查约束是(T1.c1 in (1,2)),T2 的检查约束是(T2.c1 in (2,3)),那么将 V1 视为 T1 和 T2 的并集。
- 行 c1 = 4 不满足基础基本表的检查约束,并且
- 行 c1 = 2 满足所有基础基本表的检查约束。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和更新限制。
sqlcode:-20154
sqlstate:23513
SQL20155N 创建或激活事件监视器失败,因为指定的事件监视器目标表无效。 原因码:原因码。
说明
原因码具体指示了问题根源:
- 1
至少一个列名与事件监视器数据元素标识不匹配。
- 2
至少有一列的数据类型与事件监视器数据元素标识的数据类型不兼容。
- 3
至少有一个列名与事件监视器数据元素标识相匹配,但是目标表中不允许该元素。
- 4
对于表空间的页大小而言,表的行大小太大。
- 5
丢失了必需的列。
- 6
如果数据库不是 Unicode 数据库,那么不能使用 CCSID UNICODE 声明该表。
- 7
表已分区。
- 8
另一个事件监视器已经在使用所指定的用于存储事件监视器输出的表的名称。
- 9
对于逻辑数据组,存在一个在当前发行版中不受支持的事件监视器目标表。
- 10
该表是按列组织的表。
- 11
该表包含基于表达式的索引。
用户响应
查阅管理通知日志以了解详细信息并更正表定义。
sqlcode:-20155
sqlstate:55049
SQL20156W 成功激活了事件监视器,但是某些监视信息可能丢失了。
说明
成功激活了事件监视器,但是,已确定可能由于下列原因之一使得事件监视器丢失了一些信息:
- 列的数据类型小于保存事件监视器元素标识所需要的数据类型。此数据将被截断。
- 在 SYSCAT.EVENTTABLES 中找到了目标表,但是数据库中不存在该表。将不记录相应的表的所有监视器信息。
- 在 SYSCAT.EVENTTABLES 中找到了目标表,但并非所有数据库分区上都存在该表。将不会记录某些分区的监视器信息。
- 写入至文件的统计信息事件监视器的缓冲区大小太小,无法容纳最大的记录。
用户响应
请查看管理通知日志以了解详细信息。如果这是统计信息事件监视器,请检查缓冲区大小;如果缓冲区大小太小,请重新创建缓冲区大小至少为 4 的事件监视器。对于其他类型的事件监视器,请在必要时重新创建事件监视器以创建所有目标表。
sqlcode:+20156
sqlstate:01651
SQL20157N 具有授权标识 授权标识 的用户未能连接至停顿实例,或者连接至处于下列停顿方式的停顿数据库或停顿实例中的数据库:停顿方式
说明
当实例处于 QUIESCE RESTRICTED ACCESS 方式时,所指定的授权标识没有权限来连接停顿实例,或者停顿实例中的数据库。要能够连接该实例或连接该数据库,授权标识必须满足以下列示的其中一个条件:
- 拥有 SYSADM、SYSCTRL 或 SYSMAINT 权限
- 是使用 QUIESCE INSTANCE 或 START DATABASE MANAGER 命令的 USER 选项(或 db2InstanceQuiesce 或 db2InstanceStart API)指定的用户
- 是使用 QUIESCE INSTANCE 或 START DATABASE MANAGER 命令的 GROUP 选项(或 db2InstanceQuiesce 或 db2InstanceStart API)指定的组中的成员
如果已停顿的数据库采用 QUIESCE DATABASE 方式,那么授权标识必须满足上面所列示的其中一个条件,或者拥有 DBADM 权限或 QUIESCE_CONNECT 特权,该用户才能成功地连接至已停顿的数据库。
在事件中,停顿实例中的数据库处于 QUIESCE INSTANCE 方式,那么授权标识必须满足上述列出的其中一个条件或拥有 DBADM 权限,用户才能成功连接停顿实例中的数据库。
在事件中,实例处于 QUIESCE INSTANCE 方式,那么授权标识必须满足上述列出的其中一个条件,用户才能成功连接停顿实例。
用户响应
可以执行下列其中一项操作来成功连接停顿数据库或停顿实例中的数据库,或者连接停顿实例:
- 要连接数据库,请等待数据库取消停顿。
- 要连接实例或连接实例中的数据库,请等待实例取消停顿。
- 通过使用拥有充分权限的授权标识,重新尝试连接数据库或连接实例。
sqlcode:-20157
sqlstate:08004
SQL20158N DB2 Data Links Manager 在此版本的 DB2 副本中不受支持。
说明
DB2 Data Links Manager 在此版本的 DB2 副本中不受支持,但是尝试了执行下列其中一项操作:
- 复原为 Data Links 启用的数据库的数据库备份映像。
- 对使用 DATALINK 数据类型的数据库进行升级。
- 创建使用 DATALINK 数据类型的数据库对象。使用 DATALINK 数据类型的数据库对象包括表、视图、函数、方法、单值类型和结构化数据类型。
用户响应
执行下列其中一项操作:
- 复原(RESTORE)支持 Data Links 的前发行版的 DB2 副本中的数据库备份映像,禁用 Data Links,备份数据库,然后使用您要将该数据库升级到的 DB2 副本版本重新发出 RESTORE DATABASE 命令。
- 使用支持 Data Links 的前发行版的 DB2 副本,禁用 Data Links,然后重新发出 UPGRADE DATABASE 命令。
- 移除对 DATALINK 数据类型的所有引用,然后重新发出此语句以创建数据库对象。
sqlcode:-20158
sqlstate:42997
SQL20159W 由于语句上下文而忽略了隔离子句。
说明
隔离子句是在当作直接插入 SQL 来处理的复合语句所包含的语句上指定的。忽略了隔离子句,并对复合语句中的所有语句使用缺省隔离级别。
用户响应
不需要任何响应。除去隔离子句以阻止此警告。
sqlcode:+20159
sqlstate:01652
SQL20160W 权限授予 USER 用户标识。因为权限名称大于 8 字节,所以不考虑组。
说明
权限名称的长度大于 8 字节。将特权授予用户,权限名称为 用户标识,而不考虑在系统中定义的可能有匹配名称的组。继续处理。
用户响应
如果授权是对用户执行的,那么不需要执行操作。如果授权是对组执行的,应考虑选择备用组,因为不支持组名大于 8 字节。要避免此警告消息,应在权限名称前指定 USER 关键字。
sqlcode:+20160
sqlstate:01653
SQL20161W 列名列名不是事件监视器表的有效列。
说明
在 INCLUDES 或 EXCLUDES 子句中指定的列名与正在创建的事件监视器表的任何有效列不匹配。
用户响应
检查并更正指定的列名。
sqlcode:-20161
sqlstate:428AA
SQL20165N 在指定 SQL 数据更改语句的上下文中,不允许 FROM 子句中的 SQL 数据更改语句。
说明
- SELECT 语句的外层全查询
- SELECT INTO 语句
- 公共表表达式的外层全查询
- 赋值语句中的唯一全查询。
如果在查询的其他部分使用了任何输入变量,那么 FROM 子句中的多行 INSERT 不能包括 USING DESCRIPTOR 子句。FROM 子句中的多行 INSERT 语句不能指定 NOT ATOMIC。XQuery 语句中的 SQL 全查询不能在 FROM 子句中包括 SQL 数据更改语句。全局变量定义的缺省子句中的 SQL 全查询不能在 FROM 子句中包括 SQL 数据更改语句。
无法处理该语句。
用户响应
更改该语句以便 FROM 子句中的 SQL 数据更改语句用于受支持的上下文中,并且是 FROM 子句中的唯一表引用。
sqlcode:-20165
sqlstate:428FL
SQL20166N SELECT 中的 SQL 数据更改语句指定了一个不是对称视图或者尚未定义为对称视图的视图 视图名。
说明
SELECT 语句中的 SQL 数据更改语句的目标视图必须使用 WITH CASCADED CHECK OPTION 来定义,或者必须能够使用 WITH CASCADED CHECK OPTION 来定义视图定义中的全查询(或者引用的视图的视图定义的全查询)。
对称视图是使用 WITH CASCADED CHECK OPTION 隐式或显式定义的视图。
无法处理该语句。
用户响应
不要对指定的视图使用 SELECT 中的 SQL 数据更改语句。
sqlcode:-20166
sqlstate:428FM
SQL20167N 共享内存集不足以处理请求。
说明
- FCM 连接条目
- FCM 消息锚点
- FCM 请求块
用户响应
再次尝试该请求。如果错误仍存在,那么停止并重新启动实例,以允许更大的共享内存集大小(由 DB2 自动更新)生效,然后再次尝试该请求。
sqlcode:-20167
sqlstate:57011
SQL20168N ALTER BUFFERPOOL 语句当前正在处理中。
说明
如果 ALTER 操作已经在处理中,那么不能删除或改变缓冲池。
用户响应
一直等到 ALTER 操作完成为止。使用快照监视器来检查正在进行的 ALTER 操作的进度。
sqlcode:-20168
sqlstate:55051
SQL20169W 未启动缓冲池。
说明
语句成功,但是,仅当启动缓冲池时该语句才会生效。
用户响应
语句已成功完成,且它将在激活数据库时生效。这将发生在所有应用程序断开连接之后。要使语句立即生效,可在启动缓冲池时重新提交该语句。要启动缓冲池,在某些情况下可能要使用 IMMEDIATE 选项来删除然后重新创建缓冲池。
sqlcode:+20169
sqlstate:01654
SQL20170N 表空间 表空间名 中没有足够的空间来执行指定的操作。原因码:原因码。
说明
- 1
- 除去的空间量大于空间量的高水位标记。
- 2
- 除去的空间量将导致表空间少于必需的 5 个扩展数据块。
用户响应
- 1
- 使用快照监视器来查找表空间中可用的页数和表空间高水位标记。这些值之间的差就是可以除去的最大页数。
- 2
- 使用快照监视器来查找表空间中可用的页数和表空间扩展数据块大小。表空间中可使用的扩展数据块的数目等于可用页数除以扩展数据块大小。必须至少有 5 个扩展数据块能够提供表空间中的可用页。
sqlcode:-20170
sqlstate:57059
SQL20173W 成功创建了事件监视器,但是至少有一个事件监视器目标表已存在。
说明
当创建事件监视器时,数据库管理器尝试创建一个或多个目标表,但是确定已经存在具有这些名称的表。成功创建了事件监视器,但是,未创建目标表用来替换已存在的同名的表。当激活事件监视器时,它将尝试使用这些表。如果激活处理确定这些表不合适,那么事件监视器激活可能会失败。
用户响应
查阅管理通知日志以了解详细信息。如果有必要,请删除所有目标表,并重新创建事件监视器以创建所有目标表。
sqlcode:+20173
sqlstate:01655
SQL20178N 视图 视图名 已经定义了 INSTEAD OF 触发器 触发器。
说明
视图 视图名 已经为指示的操作(UPDATE、DELETE 和 INSERT)定义了 INSTEAD OF 触发器。只能为对视图执行的每个操作定义一个 INSTEAD OF 触发器。
无法处理该语句。未创建 INSTEAD OF 触发器。
用户响应
如果需要新的 INSTEAD OF 触发器,那么删除现有触发器,然后创建新的触发器。
sqlcode:-20178
sqlstate:428FP
SQL20179N 无法创建 INSTEAD OF 触发器,因为定义视图 视图名 的方式有问题。
说明
不能对下列各项定义 INSTEAD OF 触发器:
- 使用 WITH CHECK OPTION 定义的视图
- 在其上已经直接或间接定义了这样一个视图的视图
- 在其上已经直接或间接定义了这样一个视图的视图
- 引用未保护的昵称并且启用了数据库分区功能部件的视图
不能对下列各项定义 INSTEAD OF UPDATE 触发器:
- 嵌套在使用 WITH ROW MOVEMENT 子句定义的视图中的视图
- 视图可以是 INSTEAD OF 触发器的目标视图,它也可以是直接或间接依赖于触发器的目标视图的视图。
- 无法处理该语句。未创建 INSTEAD OF 触发器。
用户响应
- 如果使用 WITH CHECK OPTION 定义了视图,请除去 WITH CHECK OPTION 子句
- 如果视图嵌套在使用 WITH ROW MOVEMENT 子句定义的视图中,请除去 WITH ROW MOVEMENT 子句。
- 如果视图引用未保护的昵称,请指定其他视图。
sqlcode:-20179
sqlstate:428FQ
SQL20180N 无法按照指定方式改变 表名 表中的 列名 列。
说明
由于下列其中一个原因而无法改变 列名 列:
- 如果此表定义为历史记录表,那么不能对 ALTER TABLE 指定 ADD COLUMN。
- 如果此表定义为历史记录表,那么不能对 ALTER TABLE 指定 ALTER COLUMN。
- 对于历史记录表中的列,不能对 ALTER TABLE 指定带有 SET GENERATED 的 ALTER COLUMN。
- 对于已经是生成列或者具有已定义的缺省值的列,不能对 ALTER TABLE 指定带有 SET GENERATED AS 的 ALTER COLUMN。
- 如果此表定义为历史记录表,那么不能对 ALTER TABLE 指定 DROP COLUMN。
- 对于定义为 BUSINESS_TIME 时间段的一部分的列,不能对 ALTER TABLE 指定带有 DROP NOT NULL 的 DROP COLUMN。
- 对于定义为系统时间段时间表的“行开始”列或“行结束”列的列,不能对 ALTER TABLE 指定带有 DROP GENERATED 的 DROP COLUMN。
- 对于使用随机依据生成方法的随机分发表的随机分发键列,不能在 ALTER TABLE 上指定带有 DROP GENERATED、SET NOT HIDDEN 或 SET IMPLICITLY HIDDEN 的 ALTER COLUMN
无法处理该语句。
用户响应
将此列的名称更改为可以改变或删除的列,然后重新创建该表,使其具有必需的属性。
sqlcode:-20180
sqlstate:428FR
SQL20183N 表 表名 与指定的表分区操作不兼容。
说明
由于下列原因,表 表名 的分区子句无效:
在 ALTER TABLE 语句、CREATE INDEX 语句或 CREATE TABLE 语句上指定了 ADD PARTITION BY,但是该表已经是分区表。
在 ALTER TABLE 语句上指定了 ADD PARTITION、ALTER PARTITION、DROP PARTITION 或 DROP DISTRIBUTION,但是该表不是分区表,该表是一个具体化查询表,或者在此表上定义了具体化查询表。
在 ALTER TABLE 语句上指定了适用于 HASH 分区的 ADD PARTITION,但是未使用散列将该表分区。
在 ALTER TABLE 语句上指定了适用于数据分区的 DROP PARTITION,但是使用了 PRESERVE ROWS 子句。PRESERVE ROWS 子句仅对于具有散列分区的分区表有效。
用户响应
将语句更改为一个有效语句或者指定另一个表,然后重新发出该语句。
sqlcode:-20183
sqlstate:428FT
SQL20188N 由 名称 标识的主键或唯一键是 ORGANIZE BY 子句中的列的子集。
说明
主键或唯一键的所有列都包括在表的 ORGANIZE BY 子句中。这是不允许的,因为表中的页的每个块将仅包含一行,从而浪费块中的所有剩余空间。
如果指定 名称,那么它是主键或唯一约束的约束名。如果未指定约束名,那么 名称 是主键或唯一约束子句中指定的第一个列名,后跟三个句点。如果正在创建唯一索引,那么 名称 是唯一索引的名称。
无法处理该语句。
用户响应
如果可能,修改主键或唯一键定义和唯一索引定义或 ORGANIZE BY 子句,以便键不是维的子集。
sqlcode:-20188
sqlstate:429BE
SQL20189W 由于内存不足,缓冲池操作(CREATE/ALTER)在下一次数据库重新启动后才会生效。
说明
成功发出并完成 CREATE 或 ALTER BUFFERPOOL 语句,但是由于内存不足,创建/改变会延迟完成。更改将在下一次数据库启动时生效。
用户响应
如果不想等到下一次启动才激活缓冲池或调整它的大小,可以释放内存资源并再次尝试(以相同或不同的大小)。可以减少的内存资源包括其他缓冲池、数据库堆、目录高速缓存、程序包高速缓存和实用程序堆。可以使用依赖于资源的 ALTER/DROP BUFFERPOOL 或 UPDATE DATABASE CONFIGURATION 命令来减少这些资源。将来,要为缓冲池内存的动态分配保留额外内存,可以增大数据库配置参数 DATABASE_MEMORY 的值。
- 如果 ALTER BUFFERPOOL 失败,那么将以当前缓冲池的运行时大小继续运行。可以使用数据库监视器来查看缓冲池的当前运行时大小。
- 如果 CREATE BUFFERPOOL 失败,那么将在缓冲池中创建的所有表空间临时(直到下次启动)放置在具有匹配页大小的隐藏缓冲池中。因为隐藏缓冲池较小,这可能导致性能比期望的性能要低。
- 对于 ALTER BUFFERPOOL,重新提交命令。
- 对于 CREATE BUFFERPOOL,删除缓冲池然后重新提交命令。
sqlcode:+20189
sqlstate:01657
SQL20190N 由于潜在的数据不一致,不能编译联合插入、更新或删除操作。
说明
当数据源不提供应用程序保存点支持,且服务器选项“iud_app_svpt_enforce”设置为“Y”时,在预编译期间将停止联合插入、更新或删除操作。这将避免潜在的数据不一致,如果在联合插入、更新或删除处理中遇到错误,在运行时执行时可能会发生这种不一致。
用户响应
- 将服务器选项“iud_app_svpt_enforce”更改为“N”。
- 在数据源上直接应用插入、更新或删除。
sqlcode:-20190
sqlstate:0A503
SQL20191N 对于动态预编译的 CALL 语句中的 INOUT 参数,必须在 USING 和 INTO 子句中使用相同的主变量。
说明
在 CALL 语句中,INOUT 参数必须与单个主变量相对应。当执行动态预编译的 CALL 语句时,必须在 EXECUTE 语句的 USING 和 INTO 子句中指定相同的主变量。
用户响应
当指定与 INOUT 参数的参数标记相对应的主变量时,在 EXECUTE 语句的 USING 和 INTO 子句中使用相同的主变量。当使用 SQLDA 指定与 INOUT 参数的参数标记相对应的主变量时,相应的 SQLVAR 的 SQLDATA 指针必须指向相同的主变量。
sqlcode:-20191
sqlstate:560BB
SQL20192N 仅在分区数据库环境中支持指定的方式。
说明
未在分区数据库环境中调用 RECOMMEND PARTITIONINGS 或 EVALUATE PARTITIONINGS。仅在分区数据库环境中才支持这两种方式。
用户响应
在分区数据库环境中调用 RECOMMEND PARTITIONINGS 或 EVALUATE PARTITIONINGS。
sqlcode:-20192
sqlstate:56038
SQL20193N 访问文件 文件名 时出错。原因码:原因码。
说明
- 1
- 文件格式错误。
- 2
- 通信错误。
- 3
- 内存分配错误。
- 4
- 由 DB2_UTIL_MSGPATH 注册表变量指示的目录路径不存在。
- 5
- 文件不存在。
- 6
- 受防护的用户标识无法创建文件(它对目录没有“执行”访问权)。
- 7
- 受防护的用户标识无法读取文件(没有“读”访问权)。
- 8
- 受防护的用户标识无法写入文件(没有“写”访问权)。
- 9
- 磁盘空间不足(磁盘已满)。
- 10
- 无法除去文件。
用户响应
使用原因码信息来确定如何使文件可访问,然后重新提交该语句。
sqlcode:-20193
sqlstate:560BC
SQL20194N 缓冲池 缓冲池名 不存在于数据库分区 数据库分区号 中。
说明
ALTER BUFFERPOOL 语句正在指定不存在于数据库分区 数据库分区号 上的缓冲池 缓冲池名。
用户响应
使用 ALTER DATABASE PARTITION GROUP 语句,将数据库分区 数据库分区号 添加至已经为其定义了缓冲池 缓冲池名 的数据库分区组。如果缓冲池不与任何特定数据库分区组相对应,那么将数据库分区添加至任何数据库分区组或为此数据库分区创建新的数据库分区组。再次发出 ALTER BUFFERPOOL 语句。
sqlcode:-20194
sqlstate:53040
SQL20195N 处理路径重命名配置文件 配置文件 中的第 行号 行时出错。原因码:原因码。
说明
正在使用路径重命名配置文件 配置文件 来在当前崩溃恢复或前滚恢复进程期间重命名容器。但是,当在此文件中处理语句时,在第 行号 行中遇到了错误,这使得恢复进程无法继续进行。下列原因码指示错误的说明:
- 无效语法。
- 容器的路径长度超过了容器路径允许的最大长度。
- 指定的容器路径已经列示在先前行中。
- 数据库的路径长度超过了数据库路径允许的最大长度。
- 指定的数据库路径已经列示在先前行中。
- 数据库路径必须是绝对路径。
- 不正确地指定了数据库路径。
- 没有正确地使用通配符(“*”)。
用户响应
按以下指示信息所描述的那样对配置文件进行相应的更改并再次重新发出命令。
- 更正语法错误。
- 指定较短的容器路径。
- 从文件除去重复的容器路径。
- 指定较短的数据库路径。
- 从文件除去重复的数据库路径。
- 使用绝对数据库路径,而不是相对路径。
- 用盘符后跟随冒号(例如 C:)的格式来指定数据库路径。
- 如果正在使用通配符,那么它必须同时是旧路径和新路径中的最后一个字符。
sqlcode:-20195
sqlstate:08504
SQL20196N 从 FROM SQL 函数或方法返回的一个或多个内置类型与作为 TO SQL 函数或方法的参数的相应内置类型不匹配。
说明
FROM SQL 变换函数或方法返回的内置类型必须与相应 TO SQL 变换函数或方法的参数列表中的类型匹配。
用户响应
选择不同的 FROM SQL 变换函数或方法或 TO SQL 变换函数或方法,或改变 FROM SQL 变换函数或方法或 TO SQL 变换函数或方法以确保从 FROM SQL 函数或方法返回的每个内置类型都与作为 TO SQL 变换函数或方法的参数的相应内置类型相匹配。
sqlcode:-20196
sqlstate:428FU
SQL20197N 不能将 方法名 定义为覆盖方法。原因码为 原因码。
说明
- 1
- 找不到名称相同的原始方法。
- 2
- 原始方法和覆盖方法的参数数目不同。
- 3
- 覆盖方法的参数的数据类型与原始方法的相应参数的数据类型不匹配。
- 4
- 覆盖方法的参数的参数名与原始方法的相应参数的参数名不匹配。
- 5
- 覆盖方法的参数的定位器指示与原始方法的相应参数的定位器指示不匹配。
- 6
- 覆盖方法的参数的 FOR BIT DATA 指示与原始方法的相应参数的 FOR BIT DATA 指示不匹配。
- 7
- 覆盖方法的 RETURNS 子句中包含 AS LOCATOR 子句、CAST FROM 子句或 FOR BIT DATA 子句。
- 8
- 指定了下列其中一个继承的方法属性:SELF AS RESULT、SQL 例程特征或外部例程特征。
- 9
- 覆盖方法的返回类型与原始方法的返回类型不匹配。
- 10
- 覆盖方法的返回类型是结构化类型,它不是以下类型的子类型:
- 原始方法的返回类型或
- 已经覆盖原始方法的所有方法的每个返回类型。
用户响应
- 1
- 使用标识结构化类型的超类型的现有方法的方法名。
- 2
- 为覆盖方法定义与原始方法存在的相同数目的参数。
- 3
- 更改数据类型以与原始方法的相应参数的数据类型相匹配。
- 4
- 更改参数名以与原始方法的相应参数的名称相匹配。
- 5
- 更改定位器指示以与原始方法的相应参数的定位器指示相匹配。
- 6
- 更改 FOR BIT DATA 指示,以与原始方法的相应参数的 FOR BIT DATA 指示相匹配。
- 7
- 除去覆盖方法的 AS LOCATOR 子句、CAST FROM 子句和 FOR BIT DATA 子句。
- 8
- 除去 SELF AS RESULT 方法属性和任何 SQL 例程特征或外部例程特征。
- 9
- 更改返回类型以与原始方法的返回类型相匹配。
- 10
- 更改返回类型以使它是原始方法和已经覆盖原始方法的所有方法的子类型。
sqlcode:-20197
sqlstate:428FV
SQL20198N 方法 方法名 递归调用它自身。
说明
方法尝试递归调用它自身。递归在性质上可能是直接的,也可能是不直接的。
用户响应
修改方法定义。
sqlcode:-20198
sqlstate:55054
SQL20199N 表空间标识 中的表 表标识 的索引 索引标识 的索引扩展名使用的密钥变换表函数生成了重复的行。
说明
由索引 索引标识 所使用的索引扩展中的 GENERATE USING 子句指定的键变换表函数生成了重复的行。对于键变换表函数的给定调用,不应该生成重复的行。当插入或更新表空间 表空间标识 中的表 表标识 的索引 索引标识 的键值时,发生了此错误。
无法处理该语句。
用户响应
必须修改索引 索引标识 的索引扩展所使用的键变换表函数的代码,以避免创建重复的行。
SELECT IID, INDSCHEMA, INDNAME
FROM SYSCAT.INDEXES AS I,
SYSCAT.TABLES AS T
WHERE IID = <index-id>
AND TABLEID = <table-id>
AND TBSPACEID = <tbspace-id>
AND T.TBASCHEMA = I.TABSCHEMA
AND T.TABNAME = I.TABNAME
sqlcode:-20199
sqlstate:22526
SQL20200N jar-标识 的安装或替换失败,因为找不到 URL。
说明
安装或替换 jar 过程中指定的 URL 未标识有效的 jar 文件。
用户响应
重新发出安装或替换 jar 过程并指定标识有效 jar 文件的 URL。
sqlcode:-20200
sqlstate:46001
SQL20201N 因为 jar 名无效,所以安装、替换或除去 jar-标识 失败。
说明
安装、替换或除去 jar 过程中指定的 jar 名称无效。例如,jar 标识的格式可能不正确,可能不存在而不能被替换或除去,或因为已存在而不能安装。
用户响应
确保 jar 标识的格式正确。如果该 jar 标识已存在,那么可能在安装之前需要先将其除去。对于除去或替换过程,确保 jar 标识存在。
sqlcode:-20201
sqlstate:46002
SQL20202N 由于例程 例程名(特定名为 特定名)正在使用 类,因此替换或除去 jar-标识 失败。
说明
jar 文件中指定的类当前正由一个已定义过程使用,或替换 jar 文件未包含对其定义了过程的指定类。
用户响应
确保删除所有引用正在除去的类的过程,并重新提交替换或除去过程。
sqlcode:-20202
sqlstate:46003
SQL20203N 用户定义的函数或过程 函数名 带有含无效特征符的 Java 方法。
说明
用来实现该函数或过程的 java 方法的特征符无效。例如,方法可能包含一些参数,这些参数不能映射到相应创建语句的参数,或过程的方法可能指定了返回值。
用户响应
重新发出指定与 Java 方法相匹配的参数的相应 CREATE 语句,或更正 Java 方法的参数或返回类型并重建类。
sqlcode:-20203
sqlstate:46007
SQL20204N 用户定义的函数或过程 函数名 无法映射至单个 Java 方法。
说明
标识的函数或过程找不到匹配的 Java 方法,或者找到多个匹配的 Java 方法。
用户响应
更正 Java 方法或相应的创建语句,以使函数或过程调用解析为单个 Java 方法。
sqlcode:-20204
sqlstate:46008
SQL20205N 用户定义的函数或过程 函数名 有一个输入自变量带有空值,未能将该自变量传送至方法。
说明
用“CALLED ON NULL INPUT”创建的函数或过程有一个输入参数带有空值,但此自变量的 Java 数据类型不支持空值。不支持空值的 Java 数据类型示例是 BOOLEAN、BYTE、SHORT、INT、LONG 或 DOUBLE。
用户响应
如果将通过空值调用方法,那么确保输入 Java 类型能够接受空值。对于函数,还可用“RETURNS NULL ON NULL INPUT”创建函数。
sqlcode:-20205
sqlstate:39004
SQL20206W 过程 函数名 返回了太多结果集。
说明
指定的过程所返回的结果集多于 CREATE PROCEDURE 语句上指定的结果集。
用户响应
将该过程修改为返回更少的结果集,或删除并重新创建指定正确结果集数目的过程。
sqlcode:+20206
sqlstate:0100E
SQL20207N jar-标识 的安装和除去 jar 过程指定了使用部署描述符。
说明
安装或替换 jar 过程的 DEPLOY 或 UNDEPLOY 参数不是零;此参数不受支持并且必须是零。
用户响应
重新发出该过程并将 DEPLOY 或 UNDEPLOY 参数设置为零。
sqlcode:-20207
sqlstate:46501
SQL20208N 未创建表 表名。原因码:原因码。
说明
因为表违反了下列原因码所指示的限制,所以不能创建该表:
- 1
用来定义登台表的表不是使用 REFRESH DEFERRED 选项定义的具体化查询表。
- 2
用来定义登台表的具体化查询表已经有登台表与它相关联。
- 3
如果 CREATE TABLE 语句是从非目录数据库分区发出的,那么不能创建引用昵称的具体化查询表。
- 4
无法创建引用了受保护表、依赖于保护表的视图或不允许对其进行高速缓存的昵称的具体化查询表。
- 5
不能对具体化查询表或登台表添加安全策略。
- 6
具体化查询表不能具有多个 DB2SECURITYLABEL 列,并且不应该在任何函数中回绕该列。
- 7
无法创建引用了具有多个 DB2SECURITYLABEL 列的受保护表的具体化查询表。
- 8
如果引用的基本表具有 DB2SECURITYLABEL 列,那么该列必须出现在查询的全查询中。
- 9
当表 tableA 变更为具体化查询表时,如果查询的全查询中列类型为 DB2SECURITYLABEL,那么 tableA 的相应列类型也必须为 DB2SECURITYLABEL。
- 10
无法为影子表创建登台表。
用户响应
根据原因码作出的响应为:
- 1
指定使用 REFRESH DEFERRED 选项创建的具体化查询表来定义登台表。
- 2
指定与登台表不关联的具体化查询表。
- 3
从目录数据库分区中发出 CREATE TABLE 语句。
- 4
更正在 CREATE TABLE 语句中指定的全查询,以便使它不违反在原因码 4 下的说明中概述的任何限制。
- 5
从 CREATE TABLE 语句中除去 SECURITY POLICY 子句
- 6
引用的受保护表最多具有一个 DB2SECURITYLABEL 列,且不应在函数中回绕此列。
- 7
具体化查询表应最多具有一个 DB2SECURITYLABEL 列。
- 8
选择具体化查询表的 DB2SECURITYLABEL 列,此列与基本表中所引用的列相同。
- 9
要将表 tableA 变更为具体化查询表,请定义全查询以便全查询中的任何 DB2SECURITYLABEL 列与 tableA 中类型为 DB2SECURITYLABEL 的列对应。
- 10
不需要执行任何操作。无法针对影子表创建登台表。
sqlcode:-20208
sqlstate:428FG
SQL20209N 选项类型 选项对表 表名 无效,原因码:原因码。
说明
由于下列原因码所指示的原因,指定的选项无效:
- 1
不能在处于设置完整性暂挂无访问状态的表上指定 READ ACCESS 选项。
- 2
如果表中仍有未检查的完整性类型,那么 FULL ACCESS 选项无效。
- 3
FULL ACCESS 选项仅在处于“通常无数据移动”状态的表上或者已拆离的表上才有效。
- 4
当表处于“通常无数据移动”状态时,不能同时指定 FULL ACCESS 选项和 IMMEDIATE UNCHECKED 选项。
- 5
在不是登台表的表上,PRUNE 选项无效。
- 6
不能同时指定 PRUNE 和 INCREMENTAL 选项。
- 7
如果由于一个涉及到数据分区的操作而需要对表进行完整性检查,那么不能同时指定 ALL 选项和 IMMEDIATE UNCHECKED 选项。
- 8
如果表的数据库分区键、表分区键、多维集群键或者范围集群键引用了生成列,并且该生成列的表达式已通过 ALTER TABLE 语句改变,那么不能将 ALL 或 GENERATED COLUMN 选项与 IMMEDIATE UNCHECKED 选项一起指定。
- 9
对于要为所有行生成标识列值的表、要完全刷新的具体化查询表、或者已经装入并且要计算它的生成列值或标识列值的表,既不能指定 ALLOW READ ACCESS 选项,也不能指定 ALLOW WRITE ACCESS 选项。
- 10
只有对 REFRESH DEFERRED 具体化查询表才能指定 ALLOW QUERY OPTIMIZATION USING REFRESH DEFERRED TABLES 选项。
- 11
此选项在文本维护的总结表中无效。
- 12
此选项在文本维护的登台表中无效。
- 13
如果 SET INTEGRITY 具有多个目标表,而任何一个目标表都是既具有所连接的数据分区、又具有非分区用户索引的分区表,那么不能同时指定 ALL 选项和 IMMEDIATE UNCHECKED 选项。
- 14
如果指定的表是系统时间段临时表,那么不能在 SET INTEGRITY 语句中指定 GENERATE IDENTITY 选项。
- 15
如果此表是系统时间段时间表,那么不能指定 FORCE GENERATED 选项。
- 16
如果此表是系统时间段时间表,那么不能指定 FOR EXCEPTION 子句。
用户响应
- 1
不要指定 READ ACCESS 选项。
- 2
将 FULL ACCESS 选项与 IMMEDIATE CHECKED 选项配合使用,或者指定 ALL 作为 IMMEDIATE UNCHECKED 选项的完整性选项。
- 3
将 FULL ACCESS 选项与 IMMEDIATE CHECKED 选项配合使用。
- 4
使用 FULL ACCESS 选项而不使用 IMMEDIATE UNCHECKED 选项。
- 5
从语句中移除不是登台表的表。
- 6
仅指定 PRUNE 或 INCREMENTAL 两者之一
- 7
不指定 ALL 选项,而是显式指定期望不对 IMMEDIATE UNCHECKED 选项选择的那些完整性选项。然后发出带有 IMMEDIATE CHECKED 选项的另一个 SET INTEGRITY 语句,以检查表的数据分区的完整性。
- 8
从期望不对 IMMEDIATE UNCHECKED 选项选择的那些完整性选项中省略 ALL 或 GENERATED COLUMN 选项。然后发出带有 IMMEDIATE CHECKED 和 FORCE GENERATED 选项的另一个 SET INTEGRITY 语句,以便根据新的表达式重新计算生成列的值。如果可以保证表中的数据满足新的生成列表达式,那么可以省略 FORCE GENERATED 选项。
- 9
对表指定 ALLOW NO ACCESS 选项。
- 10
移除 ALLOW QUERY OPTIMIZATION USING REFRESH DEFERRED TABLES 选项。
- 11
从语句中移除文本维护的总结表。
- 12
从语句中移除文本维护的登台表,或者指定 IMMEDIATE CHECKED 选项。
- 13
使用受支持的选项与目标表的组合重新发出 SET INTEGRITY 语句。例如,附带 ALL 和 IMMEDIATE UNCHECKED 选项发出 SET INTEGRITY 语句,同时仅指定受影响的分区表作为目标;或者附带 IMMEDIATE CHECKED 选项发出 SET INTEGRITY 语句并指定多个目标表。
- 14
对系统时间段时间表指定了 NOT INCREMENTAL 选项时,请省略 GENERATE IDENTITY 选项。
- 15
如果此表是系统时间段时间表,请移除 FORCE GENERATED 选项。
- 16
如果此表是系统时间段时间表,请移除 FOR EXCEPTION 子句。
sqlcode:-20209
sqlstate:428FH
SQL20211N 所指定 ORDER BY、OFFSET 或 FETCH 子句无效。
说明
不允许 ORDER BY、OFFSET 或 FETCH 子句出现在以下项中:
- 外层全查询视图
- “SQL 表函数”的 RETURN 语句中的外层全查询
- 具体化查询表定义
- 未括在圆括号中的子查询
用户响应
假设:
- 子查询
将包含 ORDER BY、OFFSET 或 FETCH 子句的子查询括在圆括号中。
- OFFSET 或 FETCH 子句
将 ROW_NUMBER() OVER() 子句与谓词一起用于 where 子句中。以下示例等价于 SELECT NAME FROM emp OFFSET 3 ROWS FETCH NEXT 6 ROWS ONLY:
SELECT name FROM (SELECT ROW_NUMBER() OVER() AS m, name FROM emp ) AS e WHERE m > 3 AND m < 10请注意,LIMIT 是 FETCH 子句的替代语法。
- ORDER BY 子句
通过使用视图、具体化查询表或 SQL 表函数来在查询中使用 ORDER BY。
sqlcode:-20211
sqlstate:428FJ
SQL20212N 用户定义的例程 函数名 尝试从 JAR JAR-名 装入 Java 类 类名 时遇到异常。原始异常 底层异常。
说明
发生了 ClassNotFoundException。ClassNotFoundException 可能引用原始 Java 异常,它将进一步描述未找到类的原因。例如,底层异常可能是在尝试读取 JAR 文件时发生的 I/O 错误,或在从数据字典读取 JAR 时发生的 SQL 错误。将适当地返回符合 SQLCA 限制个数的下列标记。
函数名 标识其执行遇到 ClassNotFoundException 的外部 Java 函数或过程的特定名称。
类名 标识未能找到其定义的 Java 类。
The JAR 名称 可选择标识应包含所标识类的已安装 JAR。除非外部 Java 函数或过程被定义为包含在已安装 JAR 中,否则将显示“(none)”。
底层异常 可选择包含在此 ClassNotFoundException 中生成的底层异常(如果有)的 toString()。如果没有底层异常,那么将显示“(none)”。
用户响应
执行 ALTER PROCEDURE 以指定在何处找到类,确保类在指定的 JAR 或系统类路径中,或更正由 底层异常 报告的条件。
sqlcode:-20212
sqlstate:46103
SQL20223N 加密或解密操作失败,因为加密工具未安装或未正常工作。
说明
您可以使用内置加密功能来加密数据库表中的数据。您可以使用加密认证,在 DB2 客户机和数据库服务器之间的转移过程中加密数据。
尝试加密或解密存储器或转移中的数据,但是没有加密工具可用,导致无法处理加密或解密请求时,将返回此消息。
用户响应
要使用加密工具,执行以下故障诊断步骤:
- 发出 db2ls 命令验证是否已安装加密工具。
- 如果未安装加密工具,请先安装它再使用加密或解密操作。
- 如果安装了加密工具但是它未在正常工作,请卸载然后重新安装加密工具。
sqlcode:-20223
sqlstate:560BF
SQL20225W 由于缓冲池正在使用中,因此缓冲池操作(DROP)在下一次数据库启动后才会生效。
说明
成功发出并完成 DROP BUFFERPOOL 语句,但表空间仍在使用此缓冲池。虽然可将表空间再分配给另一缓冲池,但表空间再分配可能只能在下一次数据库重新启动时生效。如果在落实此操作时删除上述的表空间,那么将同时从内存中除去此缓冲池。在下一次数据库重新启动之前,此缓冲池可保留在内存中且将复用此缓冲池标识的 任何其他缓冲池的 CREATE 或 ALTER 将延迟。
用户响应
重新启动数据库以从内存中删除缓冲池。
sqlcode:20225
sqlstate:01657
SQL20227N 对于 表达式 的第 编号 个自变量,缺少了必需的子句。
说明
表达式 表达式要求为自变量编号 编号 指定一个子句。如果 表达式 是 XMLATTRIBUTES,那么必须为 XML 属性名称提供 AS 子句。如果 表达式 是 XMLFOREST,那么必须为 XML 元素名称提供 AS 子句。无法处理该语句。
用户响应
通过为自变量提供必需的子句来更正该语句。
sqlcode:-20227
sqlstate:42633
SQL20230N CALL 语句中的主变量不能指定过程名称并且不能使用 USING DESCRIPTOR 子句指定自变量。
说明
必须指定过程名称来作为 CALL 语句中的标识,并且必须显式地提供自变量。不能将主变量用作过程名称。不能使用 USING DESCRIPTOR 子句来指定自变量。
用户响应
必须重新编写 CALL 语句,以便提供过程名称的标识和显式地列示自变量。如果过程名称或自变量在运行时之前是未知的,那么使用动态预编译的 CALL 语句。
对于正在从 V8 之前的发行版迁移的应用程序,在重新编写应用程序以使用动态预编译的 CALL 语句之前,可使用 CALL_RESOLUTION DEFERRED 预编译选项。
sqlcode:-20230
sqlstate:42601
SQL20238N 已将表 表名 定义成 CCSID UNICODE,不能在 SQL 函数或 SQL 方法中使用这个表。
说明
在非 Unicode 数据库中,在 SQL 函数或 SQL 方法中只能引用具有 ASCII 编码方案的表。由于已将表 表名 定义成 CCSID UNICODE,因此不能在 SQL 函数或 SQL 方法中使用这个表。
用户响应
不要在 SQL 函数或 SQL 方法中使用 CCSID UNICODE 表。
sqlcode:-20238
sqlstate:560C0
SQL20239N 采用 Unicode 编码方案创建的表不能是类型表,也不能包含图形类型、XML 类型或用户定义的类型。
说明
在非 Unicode 数据库中,采用 Unicode 编码方案创建的表不能是类型表,也不能包含使用任何图形类型、XML 类型或用户定义的类型定义的列。
用户响应
从表定义中除去 CCSID UNICODE 子句,或者从表定义中除去图形类型、XML 类型或用户定义的类型。
sqlcode:-20239
sqlstate:560C1
SQL20240N 指定类型为 DB2SECURITYLABEL 的列 列名 是无效的。原因码:原因码。
说明
对于类型为 DB2SECURITYLABEL 的列而言,由于以下原因,在 CREATE TABLE 或 ALTER TABLE 语句中指定属性可能是无效的。
- 4
不能为已创建的临时表或者已声明的临时表定义安全标号列。
- 10
不能将类型为 DB2SECURITYLABEL 的列定义为生成列。
用户响应
更正有关类型为 DB2SECURITYLABEL 的列的指定内容,然后重新提交该语句。
sqlcode:-20240
sqlstate:42963
SQL20241N 为已删除表 表名 写历史记录文件条目失败。
说明
在已删除表 表名 所在的表空间中启用了已删除表恢复。当表空间启用了已删除表恢复时,作为表删除操作的一部分,将创建历史记录文件条目。此历史记录文件包含在恢复已删除表期间很有用的数据。为已删除表写新历史记录文件条目失败。因此,未能完成表删除操作。
这样的失败的可能原因是历史记录文件所在的文件系统已满。
用户响应
确保数据库管理器可以写历史记录文件。如果您不关心已删除表恢复,那么禁用此功能并重新发出删除表语句。
sqlcode:-20241
sqlstate:560C2
SQL20242N 在 TABLESAMPLE 子句中指定的样本大小无效。
说明
在 TABLESAMPLE 子句中指定的样本大小必须是一个大于 0 且小于等于 100 的正数。
未处理该语句。
用户响应
将在 TABLESAMPLE 子句中指定的样本大小更改成一个有效的大于 0 且小于等于 100 的数值。
sqlcode:-20242
sqlstate:2202H
SQL20243N 视图 视图名 是 MERGE 语句中的目标,但 操作 操作缺少 INSTEAD OF 触发器。
说明
视图 视图名 是 MERGE 语句中的直接或间接目标,并且为其定义了 INSTEAD OF 触发器,但没有为所有操作定义 INSTEAD OF 触发器。不存在 操作 操作的触发器。
用户响应
为视图 视图名 上的 UPDATE、DELETE 和 INSERT 操作创建 INSTEAD OF 触发器,或删除该视图的所有 INSTEAD OF 触发器。
sqlcode:-20243
sqlstate:428FZ
SQL20247N 无法对表 表名 进行分区,并且该表包含一个数据类型为 DATALINK 的列。
说明
尝试以下面这种方式来创建或改变表 表名:将创建一个包含数据类型为 DATALINK 的一列的分区表。一个表不能既是分区表又包含这样一列。
用户响应
将表创建为或改变为分区表,或者包含一个数据类型为 DATALINK 的列,但是不能同时执行这两项操作。
sqlcode:-20247
sqlstate:429BH
SQL20249N 由于必须对名为 程序包名 的程序包进行显式重新绑定,因此未处理此语句。
说明
程序包 程序包名 包含必须重新绑定的节。
用户响应
请使用 REBIND 命令或 BIND 命令显式重新绑定该程序包。要保留函数和数据类型精度,请对 REBIND 命令指定 RESOLVE CONSERVATIVE 选项。
sqlcode:-20249
sqlstate:560C5