SQL0250 - SQL0499

SQL0257N 不支持原始设备容器。

说明

尝试了使用原始设备容器,但是存在下面的其中一种情况:

  • 原始设备在此平台上不受支持。
  • 无法通过 SET TABLESPACE CONTAINERS 命令为自动调整大小的表空间指定原始设备容器。
  • 原始设备容器在 DB2 pureScale 环境中不受支持。

用户响应

在 DB2 pureScale 环境中:

无需进行任何响应。在 DB2 pureScale 环境中,不能使用原始设备容器。

在非 DB2 pureScale 的环境中:

  • 如果要创建表空间,那么改为使用文件容器或者系统管理的表空间。
  • 如果要指定 SET TABLESPACE CONTAINERS 命令,那么改为使用文件容器。

sqlcode:-257

sqlstate:42994

SQL0258N 当表空间的重新平衡操作处于暂挂状态或者正在进行时,既不能执行容器操作,也不能执行 REBALANCE。

说明

下列其中一个条件为真:

  1. 涉及到容器操作或者 REBALANCE 子句的 ALTER TABLESPACE 语句先前已经由此应用程序或另一应用程序发出,但仍须落实。
  2. 正在进行重新平衡。

用户响应

作出适合于情况的响应:

  1. 如果可能,那么回滚未落实的工作单元并发出单个 ALTER TABLESPACE 语句以执行所有容器操作。否则,等待到重新平衡完成,然后再次尝试执行该操作。注意,不能在同一 ALTER TABLESPACE 语句的表空间中添加和除去页。
  2. 等到重新平衡完成,然后再次尝试执行该操作。

sqlcode:-258

sqlstate:55041

SQL0259N 表空间的容器映射太复杂。

说明

映射结构保存表空间地址空间如何映射至各种容器的记录。如果这过于复杂,那么不适合于表空间文件。

用户响应

可能需要重新平衡表空间,以在容器中更均匀地分布数据。这可能简化映射。

如果这不起作用,那么尝试将使尽可能多的容器大小相同。现有的容器大小可通过备份表空间,然后使用数据库管理实用程序更改容器的方法来改变。将表空间复原为新容器。

sqlcode:-259

sqlstate:54037

SQL0260N 列名 不能属于分布键或表分区键,因为它是 LONG 列、DATALINK 列、XML 列或结构化类型列。

说明

分布键和表分区键都不能包含 LONG 列、DATALINK 列、XML 列或结构化类型列。

无法处理该语句。

用户响应

不要将 LONG 列、DATALINK 列、XML 列或结构化类型列用于分布键或表分区键。

如果表需要是分布式的,并且只有 LONG 列、DATALINK 列、XML 列或结构化类型列,那么向该表中添加可用于分布键的列,或者在单一分区数据库分区组中定义没有分布键的表。

如果需要对表进行分区,并且该表只包含 LONG 列、DATALINK 列、XML 列或结构化类型列,请添加可以用于该表的分区键的列或者定义非分区表。

sqlcode:-260

sqlstate:42962

SQL0262N 无法在数据库分区组 组名 中创建表 表名,因为不存在可用作分布键的列。

说明

不能在数据库分区组中创建表 表名。表必须至少有一列可用作分布键。不能在分布键中使用下列数据类型的列:

  • BLOB
  • CLOB
  • DATALINK
  • DBCLOB
  • LONG VARCHAR
  • LONG VARGRAPHIC
  • XML
  • 结构化类型
  • 基于前面列示的任何数据类型的用户定义的数据类型

无法处理该语句。

用户响应

使用一个或多个可在分布键中使用的列创建表,或在单个数据库分区组中创建表。

sqlcode:-262

sqlstate:428A2

SQL0263N 成员编号-1成员编号-2 的成员范围无效。第二个成员编号必须大于或等于第一个成员编号。

说明

所指定的成员范围无效。

无法处理该语句。

用户响应

请更正该语句中的成员范围,然后再次尝试该请求。

sqlcode:-263

sqlstate:428A9

SQL0264N 不能添加或删除分区键,因为表驻留在一个定义于多分区数据库分区组 名称 上的表空间中。

说明

只能添加或删除一个位于单个数据库分区组中的表上的分区键。

无法处理该语句。

用户响应

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

  • 用分区键定义一个相同的表。
  • 将数据库分区组重新分发至单个数据库分区组。

sqlcode:-264

sqlstate:55037

SQL0265N 在数据库分区号列表中检测到重复的成员编号或者数据库分区号。

说明

对于 CREATE DATABASE PARTITION GROUP 语句,一个数据库分区号在 ON DBPARTITIONNUMS 子句中只能出现一次。

对于 CREATE TABLESPACE 和 ALTER TABLESPACE 语句,数据库分区号只能出现一次,并且只能出现在一个 ON DBPARTITIONNUMS 子句中。

对于 ALTER DATABASE PARTITION GROUP 语句或 REDISTRIBUTE DATABASE PARTITION GROUP 命令,发生了下列其中一种情况:

  • 数据库分区号多次出现在 ADD DBPARTITIONNUMS 或 DROP DBPARTITIONNUMS 子句中。
  • 数据库分区号既出现在 ADD DBPARTITIONNUMS 子句中,又出现在 DROP DBPARTITIONNUMS 子句中。
  • 要添加的数据库分区号已经是数据库分区组的成员。

无法处理该语句。

对于调用 WLM_ALTER_MEMBER_SUBSET 语句,要添加的成员已经是成员子集的成员。

用户响应

请确保 ON DBPARTITIONNUMS、ADD DBPARTITIONNUMS 或 DROP DBPARTITIONNUMS 子句中的数据库分区名或者数据库分区号是唯一的。对于 CREATE TABLESPACE 和 ALTER TABLESPACE 语句,请确保数据库分区号不在多个 ON DBPARTITIONNUMS 子句中出现。

此外,对于 ALTER DATABASE PARTITION GROUP 语句或 REDISTRIBUTE DATABASE PARTITION GROUP 命令:

  • 请不要同时在 ADD DBPARTITIONNUMS 和 DROP DBPARTITIONNUMS 子句中指定数据库分区号。
  • 如果在数据库分区组中已经定义了该数据库分区号,请从 ADD DBPARTITIONNUMS 子句中除去此数据库分区号。

对于调用 WLM_ALTER_MEMBER_SUBSET 语句,请将该成员号从成员列表中除去。

sqlcode:-265

sqlstate:42728

SQL0266N 所指定的成员编号或者数据库分区号 成员编号 无效。

说明

所指定的成员编号或数据库分区号 成员编号 由于下列其中一种原因而无效:

  • 此成员编号或数据库分区号不在有效范围 0 到 999 之内。
  • 此成员编号或数据库分区号不在配置文件中。
  • 此成员编号或数据库分区号不是数据库分区组的一部分,因此无法处理所请求的操作。
  • 该语句引用了事件监视器,而该事件监视器已定义为要在此实例中不存在的成员上运行。
  • WLM_ALTER_MEMBER_SUBSET 语句中指定的成员编号不在成员子集中。

无法处理该语句。

用户响应

根据情况:

  • 使用位于有效范围内的成员编号或数据库分区号发出语句、命令或 API。
  • 遵循将成员或数据库分区添加至系统的过程。
  • 在语句、命令或 API 中,从所指定的成员或数据库分区中除去此成员或数据库分区。
  • 删除该语句所引用的事件监视器。
  • 重新输入 WLM_ALTER_MEMBER_SUBSET 语句并在其中指定成员子集中存在的成员编号。

sqlcode:-266

sqlstate:42729

SQL0268N 当正在重新分发数据库分区组时,不能执行 操作

说明

下列其中一项适用,由 操作 指示:
  • 正在重新分发数据库分区组,在完成当前操作之前,不能再次改变、删除或重新分发该数据库分区组。
  • 当正在重新分发表的数据库分区组时,不能删除该表的分区键。
  • 不能创建新对象,因为 REDISTRIBUTE 正在删除此数据库分区组中所有旧的数据库分区。
  • 不能通过 ALTER TABLE 来添加新列,因为 REDISTRIBUTE 正在删除此数据库分区组中所有旧的数据库分区。

无法处理该语句。

用户响应

等到完成重新分发之后再次尝试该请求。

sqlcode:-268

sqlstate:55038

SQL0269N 数据库包含最大分区映射数。

说明

由于数据库包含最大分区映射数(32,768),因此不能创建新的数据库分区组、改变数据库分区组或重新分发现有数据库分区组。

无法处理该语句。

用户响应

删除数据库中的一个或多个数据库分区组。

注意:删除数据库分区组将删除驻留在该数据库分区组中的所有数据库对象(例如,表空间、表和视图)。

sqlcode:-269

sqlstate:54033

SQL0270N 函数不受支持(原因码:原因码)。

说明

因为该语句违反下列原因码所指示的限制,所以不能对其进行处理:

1

主键、每个唯一约束以及每个唯一索引都必须包含表的所有分布列。

2

不支持更新分布键列值。

3

如果定义外键时指定了 ON DELETE SET NULL,那么它不能包含任何可空分布键列。由于定义这样的约束将导致尝试更新分布键列,因此这是原因码 2 的特殊情况。

5

用 WITH CHECK OPTION 子句创建的视图不应使用这样的函数(或者使用这样的函数的引用视图):

  • 不确定
  • 具有副作用
  • 与数据布局相关,例如节点号或分区函数

如果创建新视图时指定了 CASCADED 检查选项,那么这些函数也不能存在于所引用的视图中。

6

不能为用户定义的单值类型定义变换。

7

只能使用页大小为 4 KB 的表空间来定义长字段。只能使用 4 KB 页大小来创建大型表空间(LARGE TABLESPACE)。

8

在 DB2 V7.1 之前,不支持结构化类型作为表或结构化类型属性数据类型的列。

9

在类型表上不支持触发器。

10

不能选择单个缺省表空间,因为该表包含一个或多个 LOB 列,这些列必须放在页大小为 4 KB 的表空间中,但是该表中的行大小或列数要求表空间的页大小为 8 KB。

11

不能使用没有属性的结构化类型来创建类型表或带类型视图。

12

源键参数的类型必须是用户定义的结构化类型或者并非源于 LOB、XML、LONG VARCHAR 或 LONG VARGRAPHIC 数据类型的单值类型。

13

不能在类型表上定义检查约束,也不能在带类型视图上指定 WITH CHECK OPTION 子句。

14

不能对类型表定义引用约束或将其定义至作为类型表的父表。

15

不能对引用类型列定义缺省值。

16

在 DB2 UDB V7.1 之前,引用数据类型或结构化数据类型不能用作用户定义的函数的参数数据类型或返回数据类型。否则,有限制的引用数据类型或数组数据类型不能用作例程的参数数据类型或返回数据类型。结构化数据类型或数组数据类型不能用作表或行函数的返回列。

17

SET INTEGRITY 语句不能用于类型表。

18

不能授予对类型表、带类型视图或昵称的列级别 UPDATE 和 REFERENCES 特权。

19

定义类型表的列的缺省值时,必须指定缺省值。

20

具体化查询表不支持 ALTER TABLE。

21

无法删除具体化查询表的基本表中的列,也不能改变其长度、数据类型、安全性、可空性或隐藏属性。

22

不能在 CREATE SCHEMA 语句中定义具体化查询表。

23

只能对使用 REFRESH DEFERRED 定义的具体化查询表指定 REPLICATED。

24

BEFORE 触发器中的触发操作不能引用使用 REFRESH IMMEDIATE 定义的具体化查询表。

25

只能对 SET INTEGRITY 语句指定一个具体化查询表。

26

正在重新分发的数据库分区组至少包含一个复制型具体化查询表。

27

要对一个表定义复制型具体化查询表,该表必须对构成该复制型具体化查询表的一列或多列定义唯一索引。

28

不能重命名类型表或具体化查询表。

29

不能在 SET INTEGRITY 语句中对具体化查询表指定 FOR EXCEPTION 子句。

30

不能在 CREATE SCHEMA 语句中定义类型表和带类型视图。

31

不能将分布键定义为包含 500 个列以上。

32

在非目录分区上使用多分区数据库分区组或者单一分区数据库分区组定义的表不支持使用 FILE LINK CONTROL 定义的 DATALINK 列。

33

使用 REFRESH IMMEDIATE 定义的具体化查询表的底层表不能是具有级联效果(即,指定了选项 ON DELETE CASCADE 或 ON DELETE SET NULL)的引用约束的子代。

34

底层对象关系功能部件在当前发行版中不受支持。

35

在 V7 多节点数据库环境中,不能创建序列或标识列。

36

不允许激活包含序列或标识列的多节点 V7 数据库。

38

在 DB2 UDB V8.1 修订包 6 以前,在多分区数据库分区组中不支持使用索引扩展的索引。

39

在 SQL 函数或 SQL 方法的主体中,不能直接或间接引用昵称或 OLE 数据库表函数。

40

不能在触发器或 SQL 函数中使用函数 IDENTITY_VAL_LOCAL。

41

单一 SQL 变量语句不能同时对局部变量和转换变量进行赋值。

42

在多节点数据库中,不允许执行使用了 SQL 控制语句的触发器、方法或函数,也不允许执行动态复合语句。

43

一个或多个指定的选项当前不受支持。

44

在 MPP、SMP 和 Data Joiner 中,不支持下列 EXPLAIN MODES:

  • COUNT CARDINALITIES
  • COMPARE CARDINALITIES
  • ESTIMATE CARDINALITIES
45

多维集群 (MDC) 或插入时集群 (ITC) 表不支持 APPEND 方式。

46

多维集群 (MDC) 或插入时集群 (ITC) 表不支持 INPLACE 表重组。

47

多维集群 (MDC) 或插入时集群 (ITC) 表不支持索引扩展。

48

不支持对多维集群 (MDC) 表的维规范进行更改。

49

多维集群 (MDC) 或插入时集群 (ITC) 表不支持集群索引。

50

用户定义的临时表不能是多维集群 (MDC) 或插入时集群 (ITC) 表。

51

当数据库分区不是目录数据库分区时,不支持从该数据库分区发出影响基于表达式的索引的 DDL 操作。

52

如果生成列是分布键列,或者在 ORGANIZE BY 子句、PARTITION BY 子句或 DISTRIBUTE BY 子句中使用了生成列,那么不能修改它的表达式,也不能将它的表达式添加至不是使用表达式生成的列。

53

不能在可滚动游标的选择列表中指定具有 LONG VARCHAR、LONG VARGRAPHIC、LOB 或 XML 类型、基于任何这些类型的单值类型或者结构化类型的列。

54

指定的系统目录表不支持 INPLACE 表重组。

55

联合数据库系统支持和集中器功能不能同时处于活动状态。

56

处于 ALLOW WRITE 方式的空间索引不支持以重建方式进行联机索引重组。

57

仅当指定了 CLEANUP 选项或 RECLAIM EXTENTS 选项时, 才支持对处于 ALLOW WRITE 方式的多维集群 (MDC) 或插入时集群 (ITC) 表执行联机索引重组。

58

对于 V8 数据库:XML 数据类型只能用作瞬时数据类型,并且不能存储在数据库中或者返回到应用程序。

59

在分区数据库环境中,不能使用包含 SQL 语句的函数或方法。

60

不允许使用 ALTER TABLE ALTER COLUMN SET INLINE LENGTH 语句,因为有一个类型为 VIEW 的对象(无论是类型对象还是隐式类型对象)依赖于类型表。

61

不能在表达式中对检查约束或生成列使用文本搜索功能。

62

WITH CHECK OPTION 子句不能与直接引用了文本搜索功能的视图配合使用,也不能与依赖于其他引用了文本搜索功能的视图的视图配合使用。

63

不能在不灵敏可滚动游标的选择列表中指定带有 LOB 类型、LOB 类型上的单值类型的列,也不能指定带有 LONG VARCHAR、LONG VARGRAPHIC、DATALINK、LOB、XML 类型、任何这些类型上的单值类型或结构化类型的列。

64

在此平台上不支持联合处理。

65

不允许将昵称本地类型从当前类型改变为指定的类型。

66

内置变换组 SYSSTRUCT 不受支持。

67

不能指定昵称或基于昵称的视图作为 MERGE 或 UPDATE 语句中的目标。

68

在分区数据库中,SQL 语句中支持的最大单值 NEXT VALUE 表达式数是 55。

69

从视图删除将导致派生表通过多个路径删除连接至视图定义中出现的两个或多个表。将根据不能保证的最终结果触发在派生表上定义的检查约束或触发器。

70

如果一个表是为了进行查询优化而启用的视图的基本表,那么不能删除该表的列,也不能改变列的长度、数据类型、安全性或可空性。

71

在分区数据库环境中,不能在触发器、SQL 函数、SQL 方法或动态复合语句中使用 CALL 语句。

72

不能更改可空列以成为标识列。

73

分区数据库环境中的备份映像不允许包括日志。

74

不允许按时间戳记更新恢复历史记录文件中的状态字段。

75

多数据库分区系统、启用了 SMP 的系统或联合系统不支持自动统计信息概要分析功能。

83

对于 V9.7 以前的 DB2 数据库版本,由于 DATA CAPTURE CHANGES 与 COMPRESS YES 不兼容,因此无法处理该语句。

87

不能将下列类型的表定义为分区表:类型表、登台表、用户临时表和范围集群表。

89

只有分区表的非分区索引或 CLEANUP ONLY ALL 选项才支持 REORG INDEX。

90

对于 V9.7 以前的 DB2 数据库版本,由于不支持分区索引,因此不能对 CREATE INDEX 语句指定 PARTITIONED 子句。

91

对于 V9.7 以前的 DB2 数据库版本,由于具有压缩字典的表不支持 DATA CAPTURE CHANGES,因此无法处理该语句。

92

不允许与作为已强制的引用完整性约束的父代的表拆离。

93

对于包含使用 LOAD INSERT 追加的数据并且具有从属具体化查询表或从属登台表(尚未对追加的数据而增量式刷新这些表)的分区,不允许拆离分区。

95

不能将尚未验证连接分区完整性的表更改为具体化查询表。

97

对于多节点分布键、数据分发键或 MDC 组织维的元素而言,不支持更改此数据类型。

98

不支持改变标识列的类型。

99

改变表集数据类型时更改了检查约束所使用的外部 UDF。

102

不能对类型表添加安全策略。

103

在数据库服务器 V9.5 和更低版本上,不支持以 ALLOW WRITE 方式对带有 XML 列的表执行联机索引重组。

104

如果对表定义基于 XML 列的索引,那么不允许执行原地表重组(REORG)。

105

只有处于 CLEANUP 或 RECLAIM EXTENTS 方式的块索引才支持 REORG INDEX 命令。

106

不支持将分区连接到具体化查询表。

109

如果文本搜索功能未直接引用分区表,或者它是包含 OUTER JOIN 子句的子查询的成员,那么不能应用于分区表的文本索引。

110

对于 SECLABEL、SECLABEL_BY_NAME 和 SECLABEL_TO_CHAR,安全策略名称参数必须是一个字符串常量。

111

审计策略无法与类型表相关联。

112

运行状况监视器不支持对非 root 用户安装版本配置操作和通知。

113

在分区数据库环境中,不支持在触发器或 SQL 表函数的主体中使用复合 SQL(编译型)语句。

114

不支持分区空间索引。

115

无法重新验证此函数。

116

您将同一个名称用于动态准备或执行的复合 SQL(编译型)语句中的多个指定参数标记。

119

如果 ROW 变量字段具有 ARRAY 类型,那么通过在 ROW 变量字段引用中指定元素的相应索引值无法直接检索到数组元素值。

120

尝试将数据插入至不受支持的类型的表。

121

由行组成的表的周期定义不能包含 MAINTAINED BY USER 子句。

122

由列组成的表的周期定义必须包含 MAINTAINED BY USER 子句。

用户响应

与原因码对应的操作如下所示:

1

更正 CREATE TABLE、ALTER TABLE 或 CREATE UNIQUE INDEX 语句。

2

不要尝试更新多分区表的分布键列,或者考虑先删除然后再插入分布列包含新值的行。

3

使分布键列不可空,指定另一 ON DELETE 操作,或者更改表的分布键以使外键不包括分布键的任何列。

4

指定 DATA CAPTURE NONE,或者确保将表放入指定了目录分区的单一分区数据库分区组中的表空间。

5

不要使用 WITH CHECK OPTION 子句,或者从视图定义中移除该函数或视图。

6

对于用户定义的单值类型,变换是自动的。仅对用户定义的结构化类型使用 CREATE TRANSFORM 语句。

7

对任何包含长字段的表,使用页大小为 4 KB 的表空间。如果正在使用 DMS 表空间,那么可以将长字段放入页大小为 4 KB 的表空间,并将其他表或索引数据放入具有另一页大小的表空间。当定义 LARGE TABLESPACE 时,使用 PAGESIZE 4K。

8

对于 DB2 UDB V7.1 以前的服务器,请确保 CREATE TABLE 语句或 ALTER TYPE ADD COLUMN 语句中没有任何列数据类型是结构化类型。确保在 CREATE TYPE 语句或 ALTER TYPE ADD ATTRIBUTE 语句中没有属性数据类型是结构化类型。

9

不要在类型表上定义触发器。

10

减小表中的行大小或列数,或者指定两个表空间,以便将长数据放入页大小为 4 KB 的表空间,并将基本数据放入页大小为 8 KB 的表空间。

11

当创建类型表或带类型视图时,指定至少定义了一个属性的结构化类型。

12

对于源键参数的类型,仅使用用户定义的结构化类型或者并非源于 LOB、XML、LONG VARCHAR 或 LONG VARGRAPHIC 类型的单值类型。

13

在类型表的 CREATE TABLE 或 ALTER TABLE 语句中,不要指定检查约束。在带类型视图的 CREATE VIEW 语句中,不要指定 WITH CHECK OPTION 子句。

14

不要在 CREATE TABLE 或 ALTER TABLE 语句中指定涉及类型表的引用约束。

15

不要在 CREATE TABLE 或 ALTER TABLE 语句中对具有引用数据类型的列指定 DEFAULT 子句。

16

对于 DB2 UDB V7.1 以前的服务器,在创建用户定义的函数时,请不要指定结构化类型参数或返回类型。或者,不要将有限制的引用类型指定为参数或返回类型。不要将结构化类型指定为表或行函数的返回列。

17

不要在 SET INTEGRITY 语句中指定类型表。

18

当授予对类型表、带类型视图或昵称的 REFERENCES 或 UPDATE 特权时,不要包括特定列名。

19

当在类型表的列上指定 DEFAULT 子句时,包括特定值。

20

删除该具体化查询表,然后进行重新创建并指定所需的属性。

21

要删除或变更具体化查询表的基本表中包含的列,请执行下列步骤:

  1. 删除从属具体化查询表。
  2. 删除基本表的一列,或者改变此列的长度、数据类型、可空性或隐藏属性。
  3. 重新创建具体化查询表。
22

在 CREATE SCHEMA 语句外发出 CREATE SUMMARY TABLE 语句。

23

移除 REPLICATED 规范,或者确保为具体化查询表定义指定了 REFRESH DEFERRED。

24

在 BEFORE 触发器中的触发操作中移除对具体化查询表的引用。

25

为每个具体化查询表发出单独的 SET INTEGRITY IMMEDIATE CHECKED 语句。

26

删除数据库分区组中的所有复制型具体化查询表,然后再次发出 REDISTRIBUTE DATABASE PARTITION GROUP 命令。重新创建复制型具体化查询表。

27

确保为具体化查询表定义的各个列的某个子集也是组成基本表的唯一索引的一组列。

28

要更改类型表或具体化查询表的名称,必须删除该表,然后使用新名称重新创建该表。删除该表可能意味着,其他依赖于该表的对象以及对该表的特权将丢失。

29

从 SET INTEGRITY 语句中移除 FOR EXCEPTION 子句。

30

在 CREATE SCHEMA 语句外部对带类型视图或类型表发出 CREATE 语句。

31

减少分布键中的列数。

32

对 DATALINK 列指定 NO LINK CONTROL,或者将该表放入指定了目录分区的单一分区数据库分区组的表空间。如果正在将数据重新分发至多分区数据库分区组,那么必须删除该表才能继续重新分发。

33

使用下列其中一种方法:

  • 定义具有级联效果(即,指定了选项 ON DELETE CASCADE 或 ON DELETE SET NULL)的引用约束时,不要将其子代定义为使用 REFRESH IMMEDIATE 定义的具体化查询表的底层表。
  • 定义 REFRESH IMMEDIATE 具体化查询表时,不要将其底层表定义为具有级联效果(即,指定了选项 ON DELETE CASCADE 或 ON DELETE SET NULL)的引用约束的子代。
34

移除对任何不受支持的对象关系功能部件的使用。

35

不要创建或移除 GENERATED [ALWAYS | BY DEFAULT] AS IDENTITY ... 属性。

36

删除新节点,以便还原为单节点配置。如果需要更多节点,请先删除包含标识列的序列或表,然后再添加新节点。

38

不能在多分区数据库分区组中的表上创建使用索引扩展的索引。当数据库分区组中的表上存在使用索引扩展的索引时,数据库分区组不能成为多分区数据库分区组。删除任何这样的索引并将分区添加至数据库分区组(在此情况下,不能重新创建索引),或者不更改数据库分区组。

39

移除对昵称或 OLE 数据库表函数的引用,或者移除对间接引用了昵称或 OLE 数据库表函数的对象的引用。

40

从触发器定义或 SQL 函数定义中移除对 IDENTITY_VAL_LOCAL 函数的调用。

41

将该赋值分割成两个单独的语句。其中一个语句必须只对 SQL 变量赋值,而另一个语句必须只对转换变量赋值。

42

删除新节点,以便还原为单节点配置。如果需要更多节点,那么必须删除包含控制语句的触发器、函数或方法。

43

重新发出 RUNSTATS 命令并关闭不受支持的选项。

44

在 SMP、MPP 和 Data Joiner 环境中,不能使用这些 EXPLAIN 方式。有可能时,请以串行方式运行查询。否则,将 EXPLAIN 方式设置为 YES 或 EXPLAIN,以便提供相同的信息(实际基数除外)。

45

不要在多维集群 (MDC) 或插入时集群 (ITC) 表的 ALTER TABLE 语句中指定 APPEND 子句。

46

重新发出 REORG 命令而不指定 INPLACE 选项。

47

不要在多维集群 (MDC) 或插入时集群 (ITC) 表的 CREATE INDEX 语句中指定 EXTENSION 子句。

48

删除该多维集群 (MDC) 表,然后使用经过修改的维规范重新创建该表。

49

不要在多维集群 (MDC) 或插入时集群 (ITC) 表的 CREATE INDEX 语句中指定 CLUSTER 子句。

50

不要在声明的全局临时表的 CREATE TABLE 语句中指定 ORGANIZE BY 子句。

51

从目录数据库分区中发出 CREATE INDEX 语句。

52

不要修改该表达式或者将其添加至现有的列。要更改 PARTITIONING KEY 子句、ORGANIZE BY 子句、PARTITION BY 子句和 DISTRIBUTE BY 子句或者其任何作为生成列的成员的生成表达式的组合,请删除并重新创建该表,然后重新填充。

53

修改可滚动游标的查询列表以不包括带有这些类型的列。

54

重新发出 REORG 命令而不指定 INPLACE 选项。

55

关闭集中器或联合数据库系统支持。通过将数据库管理器配置参数 MAX_CONNECTIONS 的值设置为小于或等于数据库管理器配置参数 MAX_COORDAGENTS 的值,关闭集中器。通过将数据库管理器配置中的 FEDERATED 参数设置为“否”来关闭联合数据库系统支持。

56

重新发出 REORG INDEXES 命令并指定 ALLOW NONE 或 ALLOW READ。

57

重新发出 REORG INDEXES 命令并指定 ALLOW NONE 或 ALLOW READ。

58

对于 V8 数据库:将 XML 数据输入到接受 XML 输入的其中一个函数(基本上是 XMLSERIALIZE)并将函数的输出存储在数据库中或将它返回到应用程序。

59

在分区数据库环境中,仅使用以 NO SQL 选项定义的函数或方法。

60

删除依赖于类型表的视图。对类型表重新发出 ALTER TABLE ALTER COLUMN SET INLINE LENGTH 语句,然后重新创建您删除的视图。

61

不要在表达式中对检查约束或生成列使用文本搜索功能。如果可能,使用 LIKE 功能而不是 CONTAINS。

62

不要对此视图指定 WITH CHECK OPTION 子句。

63

修改可滚动游标的查询列表以不包括带有这些类型的列。

64

不要在此平台上尝试联合处理。

65

不要尝试将昵称本地类型从当前类型变更为指定的类型。

66

不要指定 SYSSTRUCT 来作为变换组。

67

不要指定昵称或基于昵称的视图来作为 MERGE 或 UPDATE 语句中的目标。

68

减少语句中的单值 NEXT VALUE 表达式数,或更改为非分区数据库。

69

不要使用 DELETE FROM view-name。

70

禁用为查询优化而启用的视图、删除或改变基本表的列,然后启用这些视图以进行查询优化。

71

在分区数据库环境中,不要在触发器、SQL 函数、SQL 方法或动态复合语句中使用 CALL 语句。

72

列在它可空期间不能成为标识列。要进行此更改,必须删除该表,然后重新创建该表并使其包含不可空列,接着进行重新填充。此外,还可以考虑添加新列作为标识列。

73

在未指定 INCLUDE LOGS 选项的情况下发出 BACKUP 命令。

74

只能按 EID 更新恢复历史记录文件中的状态字段。

75

使用下列其中一种方法:

通过将数据库配置参数 AUTO_STATS_PROF 和 AUTO_PROF_UPD 设置为 OFF,对此数据库禁用自动统计信息概要分析功能。

将系统更改为位于单一数据库分区中并且未启用 SMP 的非联合系统。

83

如果同时指定了 DATA CAPTURE CHANGES 和 COMPRESS YES,那么必须仅指定它们的其中一个。如果指定了 DATA CAPTURE CHANGES 或 COMPRESS YES 的其中一个,那么在其中一个在表中已生效的情况下不能再指定另一个。

87

将表创建为非分区表。

89

使用 REORG INDEXES ALL 命令来重组表或数据分区的所有索引。

90

通过使用缺省值或者通过在 CREATE INDEX 中显式地指定 NOT PARTITIONED,创建非分区索引。

91

不要对此表指定 DATA CAPTURE CHANGES。

92

使用以下语句来删除引用约束:

ALTER TABLE 'child-table'
DROP CONSTRAINT ...

此外,也可以更改外键关系中的子表,以便不强制实施外键约束:

ALTER TABLE 'child-table'
ALTER FOREIGN KEY ... NOT ENFORCED

注:从外键约束中的父表执行了失败的 DETACH 语句,而在子表上执行了约束强制实施。除非外键约束是自引用约束,否则这两个表截然不同。接下来,重新提交 ALTER TABLE ... DETACH PARTITION 语句。您现在就可以变更子表以强制实施外键约束:

ALTER TABLE 'child-table'
ALTER FOREIGN KEY ... ENFORCED

这将重新检查这些表,以确保保持实施外键关系。

93

发出带有 IMMEDIATE CHECKED 选项的 SET INTEGRITY 语句,以便对使用 LOAD INSERT 追加的数据维护从属具体化查询表或从属登台表。

95

对表发出带有 IMMEDIATE CHECKED 或 IMMEDIATE UNCHECKED 选项的 SET INTEGRITY 语句,以验证相连接的分区的完整性。

97

不要更改列数据类型。

98

删除标识属性,更改类型,然后重新启用标识属性。

99

删除检查约束,然后重新发出 ALTER 语句。

102

不要对类型表添加安全策略。

103

在数据库服务器 V9.5 和更低版本上,重新发出 REORG INDEXES 命令并指定 ALLOW READ ACCESS 或 ALLOW NO ACCESS。

104

移除 INPLACE 选项并重新发出 REORG TABLE 命令。

105

重新发出指定了 CLEANUP 或 RECLAIM EXTENT 的 REORG INDEX 命令,或者发出 REORG INDEXES ALL 以便对表的所有索引(包括块索引)进行重组。

106

在尝试将分区连接到该表之前,发出 ALTER TABLE 语句以从该表中删除具体化查询属性。

109

修改查询,以将文本搜索功能放在直接引用包含文本索引但不包含 OUTER JOIN 子句的分区表的子查询中。

110

为安全策略名称参数提供一个字符串常量。

111

不要使审计策略与类型表相关联。

112

在非 root 用户安装版本中,不要尝试为运行状况监视器配置操作或通知。

113

如果可行,请使用复合 SQL(直接插入型)语句定义触发器或函数,或者移除触发器或函数定义。

114

通过在 CREATE INDEX 语句中使用 NOT PARTITIONED 子句,创建空间索引作为非分区索引。

115

记录 SYSCAT.ROUTINEAUTH 中授予该函数的特权,删除该函数,将其重新创建,然后再将那些特权授予该函数。

116

请对动态准备或执行的复合 SQL(编译型)语句中的每个所指定参数标记指定唯一的名称。

119

如果 ROW 变量字段具有 ARRAY 类型,请不要在检索元素值时指定索引值。

120

无需进行任何响应。目前不支持插入至此类型的表。

121

不要对此表添加 MAINTAINED BY USER 子句。

122

对此表添加 MAINTAINED BY USER 子句。

sqlcode:-270

sqlstate:42997

SQL0271N FID 为 fid 的表的索引文件丢失或无效。

说明

在处理期间,fid 为 fid 的表的索引文件是必需的。文件丢失或无效。

无法处理该语句,且应用程序仍连接至数据库。此情况不影响没有使用此表上的索引的其他语句。

用户响应

确保所有用户已与数据库断开连接,然后对所有节点发出 RESTART DATABASE 命令。然后再次尝试该请求。

在重新启动数据库时已重新创建该索引(或多个索引)。

sqlcode:-271

sqlstate:58004

SQL0276N 连接失败,因为数据库处于“复原暂挂”状态或“升级暂挂”状态。数据库名称:数据库名称

说明

返回此消息可能有两个原因:

1. 数据库处于“复原暂挂”状态

因为先前操作,数据库处于“复原暂挂”状态。数据库处于“复原暂挂”状态时,连接至该数据库的尝试将失败。

2. 数据库处于“升级暂挂”状态

如果 db2ckupgrade 实用程序发现数据库已准备好升级,那么 db2ckupgrade 实用程序会将只读数据库配置参数 UPGRADE_PENDING 设置为 1。如果此数据库配置参数设置为 1,那么此数据库被视为处于“升级暂挂”状态。数据库处于“升级暂挂”状态时,连接至该数据库的尝试将失败。

用户响应

  1. 如果数据库配置参数 UPGRADE_PENDING 设置为 1,请通过下列其中一种方式作出响应:
    • 等待至数据库完成升级,然后连接至该数据库。
    • 通过发出带 -resetUpgradePending 参数的 db2ckupgrade 命令以使数据库脱离“升级暂挂”状态,然后连接至该数据库。
  2. 否则,复原数据库,然后连接至该数据库。

sqlcode:-276

sqlstate:08004

SQL0279N 在 COMMIT 或 ROLLBACK 处理期间,已终止了数据库连接。该事务可能为不确定事务。原因码:原因码

说明

落实处理遇到了错误。该事务已置于落实状态,但落实处理可能未完成。应用程序的数据库连接已终止。

原因码 指示了发生错误的原因:

1

涉及事务的节点或数据源已失败。

2

在其中一个节点上落实被拒绝。查阅管理通知日志以了解详细信息。

用户响应

确定导致错误的原因。可能需要与系统管理员联系以获取帮助,因为该错误的最常见原因为节点故障或连接故障。RESTART DATABASE 命令将完成对此事务的落实处理。

sqlcode:-279

sqlstate:08007

SQL0280W 视图、触发器或具体化查询表 名称 替换了现有的不可用视图、触发器或具体化查询表。

说明

以下列内容替换了现有不可用视图、触发器或具体化查询表 名称
  • 新的视图定义(作为 CREATE VIEW 语句的结果)
  • 新的触发器定义(作为 CREATE TRIGGER 语句的结果)
  • CREATE SUMMARY TABLE 语句生成的新的具体化查询表定义。

用户响应

不需要执行任何操作。

sqlcode:+280

sqlstate:01595

SQL0281N 因为表空间 表空间名 是系统管理的表空间,所以不能用其他容器来进行更改。

说明

其他容器不可添加到系统管理的表空间。这条规则的例外是,当修改数据库分区组以添加无表空间的节点时,可使用 ALTER TABLESPACE 命令在新节点上添加一次容器。一般情况下,表空间必须由数据库管理以便添加其他容器。

无法处理该语句。

用户响应

要将更多的容器添加至系统管理表空间,可删除并重新创建有更多容器的表空间,同时应确保每个容器大小相同且小于容器大小限制,或更改为 DMS 表空间。

sqlcode:-281

sqlstate:42921

SQL0282N 不能删除表空间 表空间名,原因是,它当中至少有一个表 表名,它的一个或多个部分在另一个表空间中。

说明

指定的表空间中的表的所有部分不全包含在该表空间中。如果指定了多个表空间,那么其中一个指定表空间中的表未在列表中包含其所有部分。基本表、索引或长数据可能在另一表空间中,所以删除表空间将不会完全删除该表。这将使该表处于不一致的状态,因而不能删除表空间。

用户响应

在尝试删除表空间之前,确保表空间 表空间名 中包含的所有对象包含它们在此表空间中的所有部件,或者包括包含列表中要删除的部件的那些表空间。

这可能要求在删除表空间之前删除表 表名

sqlcode:-282

sqlstate:55024

SQL0283N 不能删除系统临时表空间 表空间名,因为它是数据库中页大小为 页大小 的唯一系统临时表空间。

说明

数据库必须至少包含一个与目录表空间具有相同页大小的系统临时表空间。删除表空间 表空间名 将从数据库中 除去最后一个页大小为 页大小 的系统临时表空间。

用户响应

在尝试删除此表空间之前,确保数据库中有另一个页大小为 页大小 的系统临时表空间。

sqlcode:-283

sqlstate:55026

SQL0284N 创建表失败,因为子句 子句 后的语句中指定的表空间 表空间名称 对于该子句是不受支持的表空间类型。表空间类型:表空间类型

说明

如果尝试创建一个表,但要创建该表的表空间的类型不支持其属性,那么会返回此消息。

如果执行以下类型的 SQL 语句,那么会返回此消息:

  • CREATE TABLE
  • CREATE GLOBAL TEMPORARY TABLE
  • DECLARE GLOBAL TEMPORARY TABLE

可导致返回此消息的不兼容性种类的示例包括以下情况:

  • 尝试在表空间中创建常规表,但该表空间不是 REGULAR 或 LARGE 表空间。
  • 尝试在表空间中创建或声明临时表,但该表空间不是 USER TEMPORARY 表空间。
  • 尝试在表空间中创建插入时间集群 (ITC) 表,但该表空间并非由数据库表空间管理。
  • 尝试在表空间中创建按列组织的表,但该表空间未定义为 MANAGED BY AUTOMATIC STORAGE 并且没有关联存储器组。

用户响应

更正该语句以对 子句 子句指定具有正确类型的表空间。

sqlcode:-284

sqlstate:42838

SQL0285N 因为主表空间 表空间名 是系统管理的表空间,所以不能将表 表名 的索引和/或长列分配给独立的表空间。

说明

如果主表空间为系统管理表空间,那么必须在该表空间中包含所有表部分。仅当主表空间、索引表空间和长表空间是数据库管理的表空间时,表的各部分才可以在单独的表空间中。

用户响应

为主表空间指定一个数据库管理的表空间,或者不将表的各部分分配给另一个表空间。

sqlcode:-285

sqlstate:42839

SQL0286N 找不到页大小至少为 页大小 且许可授权标识 用户名 使用的表空间。

说明

CREATE TABLE、CREATE GLOBAL TEMPORARY TABLE 或 DECLARE GLOBAL TEMPORARY TABLE 语句未指定表空间,找不到具有足够页大小(至少为 页大小),且具有正确类型(对于已创建的临时表或者已声明的临时表,为 USER TEMPORARY),而授权标识 用户名 对其具有 USE 特权的表空间。

表的足够页大小是由行的字节数或列数确定的。

用户响应

确保存在具有正确类型(REGULAR 或 USER TEMPORARY),且页大小至少应为 页大小,并且授权标识 用户名 对其具有 USE 特权的表空间。

sqlcode:-286

sqlstate:42727

SQL0287N SYSCATSPACE 不可用于用户对象。

说明

CREATE TABLE 或 GRANT USE OF TABLESPACE 语句指定了一个名为 SYSCATSPACE 的表空间,而它是为目录表保留的。

用户响应

指定一个不同的表空间名。

sqlcode:-287

sqlstate:42838

SQL0288N 语句失败,因为在指定 MANAGED BY SYSTEM 子句时无法定义大型表空间。

说明

定义大型表空间来存储大对象和长字符串。这些对象只能存储在定义为自动存储器的表空间中。

尝试将大型表空间建立为系统管理的表空间时,会返回此消息。

用户响应

要解决此消息报告的问题,以下是您可以执行的某些操作示例:

  • 发出不带 LARGE 子句的 CREATE TABLESPACE 语句。
  • 发出带有 MANAGED BY AUTOMATIC STORAGE 子句语句的 CREATE TABLESPACE 语句。

sqlcode:-288

sqlstate:42613

SQL0289N 未能在表空间 表空间名 中分配新页面。

说明

在一个或多个数据库分区上,下列其中一个条件为真:

1

分配给此 SMS 表空间的其中一个容器已达到最大文件大小。这可能是导致该错误的原因。

2

分配给此 DMS 表空间的所有容器已满。这可能是导致该错误的原因。

3

正在进行重新平衡,但其进度还不足以能使用新添加的空间。

4

正在对太小的容器进行重定向复原。

5

重定向复原后正在进行前滚且分配给此表空间的所有容器已满。

6

正在进行跳越添加容器的前滚且分配给此表空间的所有容器已满。

7

尝试创建带有小于 5 个可用扩展数据块的表空间。

8

自动调整大小表空间已达到其最大大小且所有容器都已满。或者,容器的当前大小与最大大小之间没有足够的空间可扩展或添加,因此不能自动增大空间。

9

创建自动存储器表空间时,使用了不会导致容器空间平均分配的值作为初始值。因此,使用了较高值但是此值大于指定的最大大小。

10

启用了自动调整大小的 DMS 表空间未达到其最大大小,但容器所在的其中一个文件系统已满,容器不能增大。

11

启用了自动调整大小的 DMS 表空间未达到其最大大小,且表空间所在的文件系统未满。但是,正在进行容器操作(或后续的重新平衡)且自动调整大小功能被暂挂,直至操作完成为止。

用户响应

执行与引起错误的原因对应的操作:

1

重新创建 AUTOMATIC STORAGE 表空间或具有更多目录 (PATH) 的 SMS 表空间,以使:(目录数)>=(最大表大小/最大文件大小)。注意,最大文件大小与操作系统有关。将表空间重新创建为 AUTOMATIC STORAGE 可让您使用存储器组。

2

将新容器添加至 DMS 表空间,并当重新平衡程序使新页可用后,再次尝试执行该操作。

3

等待重新平衡程序完成。

4

再次对较大的容器执行重定向复原。

5

再次对较大的容器执行重定向复原。

6

再次执行允许添加容器的前滚,或对较大的容器执行重定向复原。

7

重新提交 CREATE TABLESPACE 语句,确保表空间具有至少 5 个可用的扩展数据块。

8

增大表空间的最大大小。

9

减小表空间的初始大小或增大表空间的最大大小。

10

将新的容器分割集添加至表空间。现有容器不会再增大,当进行自动调整大小时,只扩展表空间的最后范围中的那些新容器。

11

等待操作和后续的重新平衡完成。

sqlcode:-289

sqlstate:57011

SQL0290N 不允许访问表空间。

说明

进程尝试访问一个处于无效状态的表空间,处于该状态的表空间不允许进行预期的访问。

  • 如果表空间处于停顿状态(“Quiesced: SHARE”、“Quiesced: UPDATE”或“Quiesced: EXCLUSIVE”),那么仅允许使表空间处于停顿状态的进程访问表空间。
  • 如果表空间处于其他任何状态,那么仅允许正在执行导致当前表空间状态操作的进程访问表空间。
  • 不能删除包含活动的系统临时表、已创建的临时表或者已声明的临时表的系统或用户临时表空间。
  • 除非表空间处于“复原暂挂”状态,否则不能使用 SET CONTAINER API 来设置容器列表。

用户响应

可能的操作包括:

  • 如果表空间处于停顿状态,那么尝试获得表空间的停顿共享或停顿更新状态。或者,尝试停顿重置表空间。
  • 如果表空间处于其他任何状态,那么在尝试访问表空间之前,请先等待表空间返回正常状态。

请参阅《管理指南》,以了解有关表空间状态的更多信息。

sqlcode:-290

sqlstate:55039

SQL0291N 表空间不允许状态过渡。

说明

尝试更改表空间状态。新状态与表空间当前状态不兼容,或者尝试关闭某种状态而表空间不处于该状态。

用户响应

采用备份时的表空间状态更改、装入完成、前滚完成等等,都取决于表空间的当前状态。请参阅系统管理指南,以了解有关表空间状态的更多信息。

sqlcode:-291

sqlstate:55039

SQL0292N 不能创建内部数据库文件。

说明

不能创建内部数据库文件。

用户响应

检查包含文件的目录是否可由数据库实例所有者访问(例如,安装)和写入。

sqlcode:-292

sqlstate:57047

SQL0293N 访问表空间容器时出错。

说明

此错误可能是由下列其中一种情况引起的:

  • 找不到容器(目录、文件或原始设备)。
  • 容器未标记为由正确的表空间拥有。
  • 容器标记毁坏。

数据库启动期间和 ALTER TABLESPACE SQL 语句的处理期间可能会返回此错误。

用户响应

尝试下列操作:

  1. 检查目录、文件或设备是否存在,并且是否已安装文件系统(如果它在单独的文件系统上)。容器必须可由数据库实例所有者读写。
  2. 如果有新近的备份,那么尝试复原表空间或数据库。如果由于坏容器以及容器不是 DEVICE 类型而失败,那么首先尝试手动除去容器。

如果处理带有 SWITCH ONLINE 选项的 ALTER TABLESPACE SQL 语句时返回此错误,请在解决问题之后重新发出该语句。

如果错误仍存在,请与 IBM 服务代表联系。

sqlcode:-293

sqlstate:57048

SQL0294N 容器已在使用中。

说明

无法共享表空间容器。导致此错误的可能原因包括下列各项。

  • CREATE TABLESPACE 或 ALTER TABLESPACE 语句包括了另一个表空间已在使用的容器。
  • CREATE TABLESPACE 或 ALTER TABLESPACE 语句包括了来自这样的表空间的容器:它已被删除但还未落实删除语句。
  • 用来添加数据库分区的 ALTER DATABASE PARTITION 语句使用了在同一物理数据库分区上的 LIKE 数据库分区的容器。因此这些容器已在使用中。
  • CREATE TABLESPACE 或 ALTER TABLESPACE 语句正在尝试在单个物理数据库分区的多个逻辑数据库分区上使用同一容器。不能将同一容器用于同一物理数据库分区上的多个数据库分区。
  • ADD DATABASE PARTITION 命令或 API 使用了来自同一物理数据库分区上 LIKE 数据库分区的系统临时表空间的容器。因此这些容器已在使用中。
  • CREATE TABLESPACE 语句、ALTER TABLESPACE 语句或 CREATE DATABASE 命令包括了不再存在、但未正确删除的另一个数据库中的 DMS 容器。该容器实际上未在使用中,但是它被标记为正在使用。因此,在取消其标记之前,DB2 数据服务器将不允许对其进行使用。然而,当取消其标记时,验证该容器是否未在被同一数据库或另一个数据库使用是很重要的。取消容器的标记时,如果它正在使用中,那么所涉及的数据库将损坏。
  • REORG 尝试自动选择要使用的 DMS 临时表空间,虽然存在一个具有合适页大小的 DMS 临时表空间,但它当前正被另一 REORG 命令使用。
  • REDISTRIBUTE 命令的 ADD DBPARTITIONNUM 选项(此选项用于添加数据库分区)将根据编号最小的数据库分区上的表空间的表空间容器名,实现在新添加的数据库分区上创建表空间容器名。如果这些容器名指定了绝对路径,并且新的数据库分区与使用相同容器名的数据库分区在同一物理设备上,那么已经在使用新分区的容器。
  • RESTORE DATABASE 命令在数据库中找到了不再存在、但是未正确删除的容器。
  • 为传输操作创建了临时登台数据库,然后尝试了在该临时登台数据库仍存在的情况下在目标数据库上创建表空间。

用户响应

确保容器唯一。

  • 对于 CREATE 或 ALTER TABLESPACE 语句,对表空间指定不同的容器。
  • 对于包括来自已删除表空间的容器的 CREATE 或 ALTER TABLESPACE 语句,落实删除语句之后再次尝试,或指定不同的容器。
  • 对于 ALTER DATABASE PARTITION 语句,使用 WITHOUT TABLESPACES 子句重新发出该语句,然后使用 ALTER TABLESPACE 语句为新的数据库分区创建唯一的容器。
  • 对于环境包括一个物理数据库分区上多个逻辑数据库分区的 CREATE 或 ALTER TABLESPACE 语句,确保未对这样的逻辑数据库分区指定相同的容器。
  • 对于 ADD DATABASE PARTITION 命令或 API,使用 WITHOUT TABLESPACES 子句重新发出该语句,然后使用 ALTER TABLESPACE 语句在新数据库分区上为系统临时表空间创建唯一的容器。
  • 如果尝试使用一个属于不再存在但未正确删除的数据库的 DMS 容器,那么可以使用 db2untag 实用程序来从容器除去 DB2 容器标记。当除去了此标记时,DB2 就认为该容器是可用的,且可以在 CREATE TABLESPACE 语句、ALTER TABLESPACE 语句或 CREATE DATABASE 命令中使用该容器。

    注意:使用 db2untag 时要特别小心。如果您对数据库仍在使用的容器发出 db2untag 命令,那么最初使用该容器的数据库以及现在正在使用该容器的数据库都将毁坏。

  • 对于 REORG,一旦使用所需表空间的初始 REORG 完成,请重新提交该命令,或者提供另一具有合适页大小的临时表空间供使用。
  • 对于 REDISTRIBUTE 命令,选择不使用 ADD DBPARTITIONNUM 选项,而是改为执行以下操作:在发出 REDISTRIBUTE 命令之前,发出附带了 WITHOUT TABLESPACES 子句的 ALTER DATABASE PARTITION GROUP 语句,然后使用 ALTER TABLESPACE 语句为新数据库分区创建唯一的容器。
  • 对于 RESTORE DATABASE 命令(容器属于一个不再存在、但是未正确删除的数据库),请除去此容器。

    注意:在除去容器之前,确保该容器没有正在被另一个数据库使用。

  • 如果为传输操作创建了临时登台数据库,那么在不再需要改临时登台数据库之后除去该登台数据库,然后在目标上尝试因存在该登台数据库而被阻止的操作。

sqlcode:-294

sqlstate:42730

SQL0295N 表空间所有容器名的组合长度太长。

说明

存储容器列表所需的总空间超过在表空间文件中分配给此表空间的空间。

用户响应

尝试下列其中一项或多项操作:
  • 使用符号链接、已安装文件系统等等来缩短新容器名。
  • 备份表空间,然后使用数据库管理实用程序,来减小容器的数量和/或名称长度。将表空间复原为新容器。

sqlcode:-295

sqlstate:54034

SQL0296N CREATE 语句失败,因为已达到此对象的数据库限制。限制:限制数目。对象类型关键字:对象关键字

说明

如果在为数据库定义的该类型的数据库对象已经达到最大数目的情况下继续尝试创建数据库对象,就会返回此消息。

用户响应

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

  • 删除同一类型的不再使用的任何数据库对象,然后重新发出 CREATE 语句。
  • 对于表空间:
    1. 将多个小型表空间中的数据移到一个更大的表空间中。
    2. 将原来的小型表空间删除。
    3. 重新发出 CREATE 语句。
  • 对于 Hadoop 表:
    • 如果数据库中定义的数据类型数目超过了限制,请删除先前通过 CREATE TYPE ARRAY 或 CREATE TYPE ROW 创建的某种类型,或者删除具有类型为 ARRAY 或 ROW 的列的 Hadoop 表。

sqlcode:-296

sqlstate:54035

SQL0297N 容器或存储路径的路径名太长。

说明

下列其中一个条件为真:
  • 指定容器名的完整路径超过允许的最大长度(254 个字符)。如果容器指定为相对于数据库目录的路径,那么这两个值的并置必须不超过最大长度。有关详细信息,可在管理通知日志中找到。
  • 存储路径超过了允许的最大长度(175 个字符)。

用户响应

缩短路径长度。

sqlcode:-297

sqlstate:54036

SQL0298N 错误的容器路径。

说明

容器路径违反下列需求之一:

  • 容器路径必须是有效的标准绝对路径或有效的相对路径。后者解释为相对于数据库目录。
  • 对于 EXTEND、REDUCE、RESIZE 和 DROP 操作,指定容器路径必须存在。
  • 路径对于实例标识必须是可读写的(检查基于 UNIX 的系统上的文件许可权)。
  • 容器的类型必须是命令中指定的类型(目录,文件或者设备)。
  • 系统管理的表空间中的容器(目录)在指定为容器时必须是空的,并且不能嵌套在其他容器以下。
  • 一个数据库的容器不能定位在另一数据库的目录之下,并且不可以在看起来是其他数据库的任何目录之下。这将任何 SQLnnnnn 格式的目录排除在外,这里“n”是任意的数字。
  • 容器必须在操作系统的文件大小限制以内。
  • 在所有代理程序终止后,已删除的数据库管理的表空间的容器(文件)仅能重新用作系统管理的表空间的容器(目录),反之亦然。
  • 重定向复原期间,对 DMS 表空间指定了 SMS 容器,或对 SMS 表空间指定了 DMS 容器。
  • 用于 EXTEND、REDUCE、RESIZE 或 DROP 操作的容器的指定类型与创建容器时指定的容器(FILE 或 DEVICE)的类型不匹配。

如果发生阻止 DB2 访问容器的任何其他意外错误,那么也将返回此消息。

如果您正在使用集群管理器,那么当数据库管理器无法将数据库容器路径添加到集群管理器配置时,可能会返回此错误。如果集群管理器无法访问此路径,那么集群管理器将不能成功地管理涉及到此路径的故障转移。集群管理器中生成的错误消息将记录在 db2diag 日志文件中。

用户响应

指定另一个容器位置或更改容器以使其可被 DB2 接受(如更改文件许可权),然后再次尝试。

如果您正在使用集群管理器,那么更正问题并重新提交该命令:

  1. 查看 db2diag 日志文件,以获取集群管理器中生成的错误消息。
  2. 对 db2diag 日志文件中的集群管理器错误消息作出响应,以解决导致数据库管理器无法将路径添加到集群管理器配置的底层问题。
  3. 重新提交该命令。

sqlcode:-298

sqlstate:428B2

SQL0299N 容器已经分配给表空间。

说明

欲添加的容器已经分配给表空间。

用户响应

选择另一个容器,然后再次尝试。

sqlcode:-299

sqlstate:42731

SQL0301N 因为数据类型方面的问题,无法使用输入变量、表达式或编号为 编号 的参数的值。

说明

未能按语句中指定的方式使用变量、表达式或者位置 编号 中的参数,这是因为其数据类型与它的值的预期用法不兼容。

可能会由于在 EXECUTE 或 OPEN 语句上的 SQLDA 中指定不正确的主变量,或不正确的 SQLTYPE 值而发生此错误。如果是用户定义的结构化类型,主变量或 SQLTYPE 的关联内置类型可能与该语句的变换组中定义的 TO SQL 变换函数的参数不兼容。在字符和图形数据类型之间执行隐式或显式强制类型转换的情况下,此错误指示以非 Unicode 字符或图形字符串尝试此强制类型转换。

无法处理该语句。

用户响应

验证语句中所有主变量的数据类型与使用它们的方式是兼容的。

sqlcode:-301

sqlstate:07006

SQL0302N EXECUTE 或 OPEN 语句中的主变量值对于其相应的使用而言超出了范围。

说明

发现输入主变量的值对于其在 SELECT、VALUES 或预编译语句中的使用而言已超出了范围。

发生了下列情况之一:

  • SQL 语句中使用的相应主变量或参数标记被定义为字符串,但是输入主变量包含的字符串太长。
  • SQL 语句中使用的相应主变量或参数标记被定义为数字,但是输入主变量包含的数值超出了范围。
  • C 语言以 NUL 终止的字符串主变量中丢失终止字符 NUL。
  • 联合系统用户:在传递会话中,可能违反了特定于数据源的限制。

由于在 EXECUTE 或 OPEN 语句上的 SQLDA 中指定了不正确的主变量或不正确的 SQLLEN 值,因此发生此错误。

无法处理该语句。

用户响应

确保输入主变量值的类型和长度正确。

如果输入主变量向参数标记提供值,那么使这些值与参数标记的隐含数据类型和长度相匹配。

联合系统用户:对于传递会话,请确定导致该错误的数据源。

检查该数据源的 SQL 方言以确定违反了哪个特定限制,并根据需要来调整失败的语句。

sqlcode:-302

sqlstate:22001, 22003

SQL0303N 不可将值赋给 SELECT、VALUES、FETCH 或赋值语句中的主变量,因为数据类型不兼容。

说明

嵌入的 SELECT、VALUES、FETCH 或赋值语句赋值给主变量,但该变量的数据类型与对应的 SELECT 列表、VALUES 列表或赋值语句元素右边不兼容。对于用户定义的数据类型,用来定义主变量的关联内置数据类型可能与该语句的变换组中定义的 FROM SQL 变换函数的结果类型不兼容。例如,如果列的数据类型是日期或时间,那么变量的数据类型必须为有适当最小长度的字符。

无法处理该语句。

用户响应

验证表定义是否是最新的,且主变量的数据类型是否正确。对于用户定义的数据类型,验证主变量的关联内置类型与该语句的变换组中定义的 FROM SQL 变换函数的结果类型是否兼容。

sqlcode:-303

sqlstate:42806

SQL0304N 不能赋值给主变量,因为该值不在主变量的数据类型的范围之内。

说明

对主变量列表执行的 FETCH、VALUES、SELECT 或赋值失败,因为主变量不够大,所以不能容纳检索到的值。

无法处理该语句。未检索到数据。

用户响应

验证表定义是否是当前的,并且主变量是否具有正确的数据类型。有关 SQL 数据类型的范围,请参阅 SQL Reference

联合系统用户:有关数据源返回的数据类型的范围,请参阅该数据源的文档。

sqlcode:-304

sqlstate:22001, 22003

SQL0305N 因为没有指定指示符变量,所以不能将 NULL 值赋给主变量。

说明

FETCH、赋值、嵌入式 SELECT 或 VALUES 操作检索到用以插入主变量的 NULL 值,但未对该主变量提供指示符变量。如果列可能返回空值,那么必须提供指示符变量。

无法处理该语句。未检索到数据。

用户响应

请检查 FETCH 或 SELECT 对象表的定义、VALUES 列表的元素或者赋值语句的右边。更正程序,以便为所有可能从其列中检索到 NULL 值的主变量提供指示符变量。

sqlcode:-305

sqlstate:22002

SQL0306N 主变量 名称 未定义。

说明

主变量 名称 未在任何 DECLARE SECTION 中声明。

无法处理该语句。

用户响应

确保声明了主变量且名称拼写正确。

SQL0307N 主变量 名称 已定义。

说明

主变量 名称 已在 DECLARE SECTION 中声明。

忽略该定义。使用先前的定义。

用户响应

确保正确拼写主变量名,且对于每一个程序该名称仅定义一次。

SQL0308N 主变量数的限制已达到。

说明

主变量数的限制取决于多少主变量适合于 SYSPLAN 的 HOST_VARS 列。已达到此限制。

忽略剩余的变量声明。

用户响应

简化程序,将程序分成更小的单独程序,或者两者都进行。

SQL0309N OPEN 语句中的主变量的值为 NULL,但其相应的使用不可为 NULL。

说明

发现输入主变量的值为 NULL,但是在 SELECT、VALUES 或预编译语句中的相应使用未指定指示符变量。

无法处理该语句。

用户响应

确保需要 USING 子句。否则,确保仅当必要时才指定指示符变量。

sqlcode:-309

sqlstate:07002

SQL0310N SQL 语句包含太多的主变量。

说明

在语句中超过了主变量的最大数目。

无法处理该语句。

用户响应

确保该语句带有更少的主变量或者不太复杂。

SQL0311N 字符串主变量号 变量号 的长度为负数或者大于最大值。

说明

在求值时,字符串主变量(它在 SQLDA 中的条目由 <变量号> 指示,基数为 1)的长度规范是负数,或大于对该主变量定义的最大值。

无法处理该语句。

用户响应

更正程序以确保所有字符串主变量的长度都不是负数,或它们不大于允许的最大长度。

sqlcode:-311

sqlstate:22501

SQL0312N 未处理该语句,因为未定义以下主变量或以不受支持的方式使用了以下主变量:变量名

说明

以下列无效方式使用主变量时,可能会返回此消息:

  • 在动态 SQL 语句或 DDL 语句中使用了主变量 变量名
  • 在不允许结构引用的位置使用了实际上是结构的主变量 变量名

用户响应

执行下列其中一个步骤,然后再次执行该语句:

  • 在动态 SQL 语句中,使用参数标记代替主变量。
  • 在 DDL 语句中,移除对主变量的引用。
  • 将结构引用替换为并非结构的主变量。
  • 从所有基于表达式的索引定义中的表达式键中移除主变量。
  • 如果已声明多个结构数组,请保留其中一个声明并移除其他所有声明。

sqlcode:-312

sqlstate:42618

SQL0313N EXECUTE 语句中的变量数、OPEN 语句中的变量数或者参数化游标的 OPEN 语句中的自变量数与所需值的数目不同。

说明

EXECUTE 或 OPEN 语句中指定的变量数与 SQL 语句中出现的参数标记所需变量的数目不同。

如果引用了参数化游标,那么游标自变量的数目与所需数目不同。

用户响应

更正应用程序,以使 EXECUTE 或 OPEN 语句中指定的变量数对于 SQL 语句中的参数标记而言正确。

更正参数化游标引用,以便指定数目正确的自变量。

sqlcode:-313

sqlstate:07001, 07004

SQL0314N 不正确地声明了主变量 名称

说明

因为下列其中一种原因,未正确地声明主变量 名称

  • 指定的类型不是受支持的类型。
  • 长度规范是 0、负数或太大。
  • 使用了初始化程序。
  • 指定了不正确的语法。
  • 指定了基数大于最大允许值的主变量数组。

变量仍未定义。

用户响应

确保仅正确地指定了数据库管理器支持的声明。

SQL0315N 未正确地声明主变量。

说明

因为下列其中一种原因,未正确地声明主变量:
  • 指定的类型不是受支持的类型。
  • 长度规范是 0、负数或太大。
  • 指定了不正确的语法。

变量仍未定义。

用户响应

确保仅正确地指定了数据库管理器支持的声明。

SQL0317N 在 BEGIN DECLARE SECTION 之后未找到 END DELCARE SECTION。

说明

在处理 DECLAR SECTION 期间到达输入末尾。

预编译终止。

用户响应

添加 END DECLARE SECTION 语句以结束 DECLARE SECTION。

SQL0318N 找到 END DECLARE SECTION,但没有前面的 BEGIN DECLARE SECTION。

说明

找到 END DECLARE SECTION 语句,但没有前面的 BEGIN DECLARE SECTION。

无法处理该语句。

用户响应

在 END DECLARE SECTION 前面输入 BEGIN DECLARE SECTION。

SQL0324N 用法 变量名 名称 的类型错误。

说明

INDICATOR 变量 名称 不是小整数,或者 STATEMENT 变量 名称 不是字符数据类型。

无法处理该语句。

用户响应

确保变量是正确的类型且指定正确。

SQL0327N 无法将行插入表 表名 中,因为它在定义的数据分区范围之外。

说明

如果执行的操作是插入或更新,那么该行的表分区键的值不在任何已定义的数据分区的值范围内。

如果执行的操作是将表改变为分区表,那么该表中存在满足以下条件的一行或多行:其表分区键值不在任何已定义的数据分区的值范围内。

无法处理该语句。

用户响应

对于插入或更新操作,请确保表分区键列在该表的数据分区的指定范围内。

可能需要将其他数据分区添加到该表。

如果将表改变为分区表,请确保指定必需的范围,以允许该表中的所有数据都在数据分区的范围内。

sqlcode:-327

sqlstate:22525

SQL0329N 路径名列表 字符串常量或主变量 无效。

说明

字符串常量或输入主变量 字符串常量或主变量 包含无效的路径名列表。已超过用于 SQL 路径(FUNCPATH 绑定选项或 CURRENT PATH 专用寄存器)或程序包路径(CURRENT PACKAGE PATH 专用寄存器)的最大模式名数目。请参阅 SQL Reference 的“Limits”附录以了解有关此限制的详细信息。

不能处理语句或命令。

用户响应

请指定较少的模式名以便不超出该限制。考虑将用户定义的函数、过程、方法、单值类型或程序包合并为较少的模式。

sqlcode:-329

sqlstate:0E000

SQL0330N 不能使用字符串,因为无法对其进行处理。原因码:原因码。代码点:代码点。主变量位置是 主变量位置

说明

不能处理字符串,因为在将字符串转换为另一个编码字符集时发生了转换错误。原因码 指示了错误类型:
8
长度异常(例如,PC MIXED 数据需要的扩充超过了字符串的最大长度)。
12
代码点无效(例如,使用 SYSSTRINGS 的 ERRORBYTE 选项)。
16
格式异常(例如,无效 MIXED 数据)。
20
转换过程错误(例如,z/OS 服务器上的一个出口将字符串的长度控制字段设置为无效值)。
24
在 wchar_t 主变量所包含的字符串中找到了单字节字符。

如果 原因码 为 12,那么 代码点 是一个无效代码点。否则,代码点 为空白或者是由出口返回的附加原因码。如果字符串是输入主变量的值,那么位置编号是 SQLDA 中的变量的序数。如果字符串不是主变量的值,那么位置编号为空白。

无法处理该语句。

用户响应

根据原因码执行下列其中一项操作:
8
扩展主变量的最大长度,以允许在转换字符串时进行扩展。
12
更改转换表以接受代码点,或者更改数据以消除代码点。
16
如果字符串被描述为 MIXED 数据,那么将它的描述或字符串更改为符合格式良好的混合数据的规则。
20
更正转换过程。
24
从图形字符串中删除单字节字符。

sqlcode:-330

sqlstate:22021

SQL0332N 不支持从源代码页 源代码页 到目标代码页 目标代码页 的字符转换。

说明

操作失败,因为 源代码页目标代码页 之间不存在代码页转换。这可能是由下列其中一个原因引起的:

  1. 源代码页与目标代码页的字符指令表不兼容,因此,当源代码页与目标代码页之间进行转换时,这可能会导致字符丢失和破坏。
  2. 不支持此特定代码页转换。

可能会导致此错误的某些操作包括:

  • 将客户机连接至数据库,而客户机的代码页与数据库代码页不相同。
  • 执行 SQL 语句,客户机的代码页与数据库代码页不相同。
  • 导入或导出 IXF 文件,而该文件的代码页与数据库代码页不相同。
  • 联合系统用户:数据源不支持指定的代码页转换。

用户响应

  1. 使源代码页与目标代码页互相兼容。要将客户机的代码页设置为与数据库代码页兼容:
    • 在 Unix 平台上,将 LANG、LC_CTYPE 或 LC_ALL 环境变量设置为这样一种语言环境:其代码页与数据库代码页相兼容。请查阅平台文档,以了解有效的语言环境名称以及与每个语言环境名称相关联的代码页。
    • 在 Windows 平台上,设置 DB2CODEPAGE 注册表变量,以使用一个与数据库代码页兼容的值来覆盖客户机的代码页。
  2. 如果源代码页与目标代码页兼容,那么说明 DB2 当前不支持此特定的代码页转换。请与技术服务代表联系以确定是否可以添加这种支持。

DB2 UDB iSeries 版的用户应该知道:具有 CCSID 65535 的字符列或图形列是不受支持的。必须将使用 CCSID 65535 的字符列或图形列转换为受支持的 CCSID(使用 CAST 来进行转换)之后,才能使用 DB2 Connect 来访问这些列。

sqlcode:-332

sqlstate:57017

SQL0334N 当执行从代码页 到代码页 目标 的转换时发生溢出。目标区域的最大大小为 最大长度。源字符串的长度为 源长度,且它的十六进制表示为 字符串

说明

在执行 SQL 语句期间,代码页转换操作产生的字符串比目标对象的最大大小还长。

用户响应

根据不同的情况,采用下列方法修改数据,以避免发生溢出情况:

  • 减短源字符串的长度,或者增大目标对象的大小(请参阅此列表后面的注释),
  • 改变操作,
  • 在解密功能中使用已加密的数据值之前,将已加密的数据值强制类型转换为具有更多字节数的 VARCHAR 字符串,或者
  • 确保应用程序代码页与数据库代码页相同。这样,大多数连接就不需要代码页转换。

注意:将不会在字符转换过程中自动提升字符或图形字符串数据类型。如果结果字符串长度超过源字符串的数据类型的最大长度,那么溢出已发生。欲更正这种情况,可更改源字符串的数据类型,或者使用数据类型强制类型转换以允许由于转换而造成的字符串长度的增大。

sqlcode:-334

sqlstate:22524

SQL0336N 十进制数的小数位必须为零。

说明

十进制数用在小数位必须为零的上下文中。当在 CREATE 或 ALTER SEQUENCE 语句中为 START WITH、INCREMENT、MINVALUE、MAXVALUE 或 RESTART WITH 指定了十进制数时,就会发生这种情况。

无法处理该语句。

用户响应

更改该十进制数(从十进制定界符右边除去任何非零数位)。

sqlcode:-336

sqlstate:428FA

SQL0338N 与 JOIN 运算符相关联的 ON 子句或 MERGE 语句中的 ON 子句无效。

说明

由于下列原因之一,与 JOIN 运算符相关联的 ON 子句或 MERGE 语句中的 ON 子句无效。
  • ON 子句中的列引用一定只能引用位于 ON 子句的作用域中的表的列。
  • 在全部外连接的 ON 子句中引用的函数必须是确定的,并且没有外部操作。
  • 不能使用取消引用操作(->)。
  • MERGE 语句的 ON 子句不能包含子查询。
  • MERGE 语句的 ON 子句不能包含标量全查询。
  • MERGE 语句的 ON 子句不能包含内联 SQL 函数或内联 SQL 方法。

无法处理该语句。

用户响应

更正 ON 子句以引用相应的列,或移除所有取消引用运算符。

如果正在使用全部外连接,那么确保 ON 子句中的所有函数都是确定的,且没有外部操作。

对于 MERGE 语句的 ON 子句,移除所有子查询、标量全查询、内联 SQL 函数或内联 SQL 方法。

sqlcode:-338

sqlstate:42972

SQL0340N 公共表表达式 名称 与同一语句中出现的另一个公共表表达式定义有相同标识。

说明

公共表表达式名 名称 用在语句中多个公共表表达式的定义中。用于描述公共表表达式的名称在同一语句内必须是唯一的。

无法处理该语句。

用户响应

更改其中一个公共表表达式的名称。

sqlcode:-340

sqlstate:42726

SQL0341N 循环引用存在于公共表表达式 名称-1名称-2之间。

说明

公共表表达式 名称-1 引用其全查询中 FROM 子句中的 名称-2,而 名称-2 引用其全查询中 FROM 子句中的 名称-1。不允许这种形式的循环引用。

无法处理该语句。

用户响应

从其中一个公共表表达式中除去循环引用。

sqlcode:-341

sqlstate:42835

SQL0342N 公共表表达式 名称 不能使用 SELECT DISTINCT,必须使用 UNION ALL,因为它是递归的。

说明

有两种可能的解释:
  • 公共表表达式 名称 内的全查询不能以 SELECT DISTINCT 开始,原因是该公共表表达式是递归的。
  • 公共表表达式 名称 内的全查询指定了 UNION,而非递归公共表表达式所必需的 UNION ALL。

无法处理该语句。

用户响应

从公共表表达式中除去关键字 DISTINCT,在 UNION 后面添加关键字 ALL,或除去公共表表达式中的递归引用。

sqlcode:-342

sqlstate:42925

SQL0343N 列名是递归公共表表达式 名称 所必需的。

说明

递归公共表表达式 名称 必须在公共表表达式的标识后面包括列名的规范。

无法处理该语句。

用户响应

在公共表表达式标识后面添加列名。

sqlcode:-343

sqlstate:42908

SQL0344N 递归公共表表达式 名称 有一列 列名 具有不匹配的数据类型、长度或代码页。

说明

递归公共表表达式 名称 有一列 列名,在公共表表达式的迭代全查询中引用了该列。数据类型、长度和代码页是根据对此列的初始化全查询而设置的。迭代全查询中的列 列名 的表达式的结果具有不同的数据类型、长度或代码页,这可能导致对列赋值失败。

无法处理该语句。

用户响应

更正在递归公共表表达式的全查询中使用的列,使初始化列与选代列相匹配。

sqlcode:-344

sqlstate:42825

SQL0345N 递归公共表表达式的全查询 名称 必须是两个或多个全查询的 UNION,并且不能包括列函数、GROUP BY 子句、HAVING 子句、ORDER BY 子句或包括 ON 子句的显式连接。

说明

公共表表达式 名称 包括对其自身的引用,因此:
  • 必须是两个或更多全查询的并集
  • 不能包括 GROUP BY 子句
  • 不能有列函数
  • 不能包括 HAVING 子句
  • 在迭代全查询上不能包括 ORDER BY 子句
  • 不能包括带有 ON 子句的显式连接。

无法处理该语句。

用户响应

通过以下操作更改公共表表达式:
  • 使之成为两个或更多全查询的并集
  • 除去任何列函数、GROUP BY 子句、HAVING 子句、ORDER BY 子句或包括 ON 子句的显式 JOIN。
  • 除去递归引用。

sqlcode:-345

sqlstate:42836

SQL0346N 对公共表表达式 名称 的无效引用发生在第一个全查询中,该引用在同一条 FROM 子句中第二次出现,或出现在子查询中的 FROM 子句中。

说明

公共表表达式 名称 包括对其自身的无效引用,如下列其中一项所述。
  • 在第一个全查询中 UNION ALL 集合运算符之前的递归引用。第一个全查询必须为初始化,且不能包括递归引用。
  • 在同一个 FROM 子句中对同一个公共表表达式有多个引用。在递归公共表表达式中不允许这样的引用。
  • 子查询的 FROM 子句中的递归引用。不能使用子查询定义递归周期。

无法处理该语句。

用户响应

更改下列其中一项:
  • 在 union 运算符之前的全查询,使它不包括递归引用
  • 包含对同一个公共表表达式的多个引用的 FROM 子句,使它只有一个引用
  • 子查询的 FROM 子句,使它不引用公共表表达式。

sqlcode:-346

sqlstate:42836

SQL0347W 递归公共表表达式 名称 可能包含无限循环。

说明

称为 名称 的递归公共表表达式可能未完成。发出此警告是因为未找到作为递归公共表表达式迭代部分的一部分的特定语法。期望的语法包括:
  • 将迭代选择列表中的 INTEGER 列加 1。
  • 迭代部分的 where 子句中的谓词,格式为“counter_col < constant”或“counter_col < :hostvar”。

在递归公共表表达式中缺少此语法可能导致一个无限循环。无论如何,递归公共表表达式的数据或某些其他特征可能允许该语句成功地完成。

用户响应

要防止无限循环,如所述的那样包括期望的语法。

sqlcode:+347

sqlstate:01605

SQL0348N 不能在此上下文中指定 序列表达式

说明

该语句在无效上下文中包含了 NEXT VALUE 表达式或 PREVIOUS VALUE 表达式。不能在下列上下文中指定 NEXT VALUE 表达式和 PREVIOUS VALUE 表达式:
  • 全部外连接的连接条件
  • CREATE TABLE 或 ALTER TABLE 语句中某列的 DEFAULT 值
  • 在 CREATE TABLE 或 ALTER TABLE 语句中生成的列定义
  • CHECK 约束的条件
  • CREATE TRIGGER 语句(可指定 NEXT VALUE 表达式,但不能指定 PREVIOUS VALUE 表达式)
  • CREATE VIEW 语句、CREATE METHOD 语句或 CREATE FUNCTION 语句
不能在下列上下文中指定 NEXT VALUE 表达式:
  • CASE 表达式
  • 聚集函数的自变量列表
  • INSERT、UPDATE 或 VALUES INTO 语句的全查询中的子查询以外的子查询
  • 外层 SELECT 为其包含了 DISTINCT 运算符的 SELECT 语句
  • 外层 SELECT 为其包含了 GROUP BY 子句的 SELECT 语句
  • 连接的连接条件
  • SELECT 语句,外层 SELECT 为该语句而与另一使用 UNION、INTERSECT 或 EXCEPT 集合运算符的 SELECT 语句组合在一起
  • 嵌套表表达式
  • 表函数的自变量列表
  • XMLTABLE、XMLQUERY 或 XMLEXISTS 表达式的自变量列表
  • 最外层的 SELECT 语句、DELETE 或 UPDATE 语句的 WHERE 子句
  • 最外层的 SELECT 语句的 ORDER BY 子句
  • 表达式的全查询的 SELECT 子句(在 UPDATE 语句的 SET 子句中)
  • SQL 例程中的 IF、WHILE、DO...UNTIL 或 CASE 语句
  • CONNECT_BY_ROOT 运算符和 SYS_CONNECT_BY_PATH 函数的自变量列表
  • START WITH 和 CONNECT BY 子句

无法执行该语句。

用户响应

除去对序列表达式的引用,并重新提交该语句。

sqlcode:-348

sqlstate:428F9

SQL0349N 位置 列位置 处列的 NEXT VALUE 表达式的规范必须与所有行同一列的所有其他表达式的规范相匹配。

说明

VALUES 表达式或是针对多行 INSERT 语句的 VALUES 子句中位置 列位置 处的列指定的表达式,包含有一个 NEXT VALUE 表达式。当使用包含 NEXT VALUE 表达式的表达式在这些上下文之一中指定某列的值时,必须为所有行的该列指定相同的表达式。例如,下列 INSERT 语句将成功:
INSERT INTO T1 
  VALUES(
    NEXT VALUE FOR sequence1 + 5, 'a'
    ),
    (
    NEXT VALUE FOR sequence1 + 5, 'b'
    ),
    (
    NEXT VALUE FOR sequence1 + 5, 'c'
    )
但是,下列 INSERT 语句将失败:
INSERT INTO T1 
  VALUES(
    NEXT VALUE FOR sequence1 + 5, 'a'
    ),
    (
    NEXT VALUE FOR sequence1 + 5, 'b'
    ),
    (
    NEXT VALUE FOR sequence1 + 4, 'c'
    )

用户响应

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

sqlcode:-349

sqlstate:560B7

SQL0350N 在列数据类型不受支持的上下文中隐式或显式引用了 列名 列。

说明

下列其中一项原因导致 ALTER 语句、CREATE 语句或 DECLARE GLOBAL TEMPORARY TABLE 语句无效:

  • 不能在键中使用 LOB、LONG VARCHAR、LONG VARGRAPHIC、XML 或结构化类型列。
  • 不能在唯一约束中使用 LOB、LONG VARCHAR、LONG VARGRAPHIC、XML 或结构化类型列。
  • 不能在生成列中使用 LOB、LONG VARCHAR、LONG VARGRAPHIC、XML 或结构化类型列。
  • 不能在已创建的临时表中使用 LONG VARCHAR、LONG VARGRAPHIC、SYSPROC.DB2SECURITYLABEL、XML 或结构化类型列。
  • 不能在已声明的临时表中使用 LONG VARCHAR、LONG VARGRAPHIC、SYSPROC.DB2SECURITYLABEL、单值类型或结构化类型列。
  • 不能在索引定义中使用 LOB 列。
  • 如果 XML 列是唯一的列并且指定了 XMLPATTERN 子句,那么该 XML 列只能用于索引定义。
  • 如果结构化类型列是唯一的列并且指定了相关联的索引扩展,那么该结构化类型列只能用于索引定义。
  • 列掩码或行许可权的定义不能引用 LOB 或 XML 列。
  • 无法为 LOB 或 XML 列定义列掩码。
  • 在 Hadoop 表中:
    • 不能在唯一定义中使用类型为数组的列。
    • 不能在唯一定义中使用类型为行的列。
    • 不能在主键定义中使用类型为数组的列。
    • 不能在主键定义中使用类型为行的列。
    • 不能在索引定义中使用类型为数组的列。
    • 不能在索引定义中使用类型为行的列。
    • 第一列的数据类型不能为数组或行。

对于其基本数据类型要受到前面列示的其中一项限制的单值类型列,该限制同样适用。

无法处理该语句。

用户响应

从其数据类型不受支持的上下文中移除此列,或者更改此列的数据类型。如果要对 XML 列或结构化类型列建立索引,那么应确保它是唯一的列并且索引定义中包括适当的子句。

sqlcode:-350

sqlstate:42962

SQL0351N 在输出 SQLDA(选择列表)的位置 位置编号 中遇到不支持的 SQLTYPE。

说明

位置 位置编号 处的 SQLDA 的元素用于不受应用程序请求器或应用程序服务器支持的数据类型。如果应用程序不直接使用 SQLDA,那么 位置编号 可能表示选择列表中的元素或 CALL 语句参数的位置。

无法处理该语句。

用户响应

更改该语句,排除不支持的数据类型。对于 SELECT 语句,除去选择列表中任何具有不受支持数据类型的列的名称,或在查询中使用强制类型转换来将列强制类型转换为受支持的数据类型。

sqlcode:-351

sqlstate:56084

SQL0352N 在输入列表(SQLDA)的位置 位置编号 中遇到不受支持的 SQLTYPE。

说明

位置 位置编号 处的 SQLDA 的元素用于不受应用程序请求器或应用程序服务器支持的数据类型。如果应用程序未直接使用 SQLDA,那么 位置编号 可能表示输入主变量、参数标记或 CALL 语句参数的位置。

无法处理该语句。

用户响应

更改该语句,排除不支持的数据类型。

sqlcode:-352

sqlstate:56084

SQL0355N 定义的列 列名 太大而不能记录。

说明

大对象数据类型(BLOB、CLOB 和 DBCLOB)最多可创建为 2 千兆字节的大小(2147483647 字节)。只允许对大小小于或等于 1 千兆字节(1073741823 字节)的对象记录数据值。因此,不能记录大于 1 千兆字节的大对象。

用户响应

通过在列创建期间使用 NOT LOGGED 短语显式地指示不需要记录数据,或者减小列的最大大小至 1 千兆字节或以下。

sqlcode:-355

sqlstate:42993

SQL0356N 由于键表达式无效,因此未创建索引。键表达式:表达式编号。原因码:原因码

说明

您可以创建包含基于表达式的键的表索引。在尝试创建包含基于表达式的键的索引,并且符合下列其中一个条件时,将返回此消息:

  • 其中一个基于表达式的键定义的某些内容无效
  • 此表不支持基于表达式的键

运行时标记 表达式编号 标识了语句中无效的键表达式。例如,如果 CREATE INDEX 语句中包含两个键表达式,并且第二个键表达式无效,那么 表达式编号 的值将是:“2”。如果无法确定表达式编号,那么将返回缺省值“*”。

原因码指示了键表达式无效的原因:

1

键表达式包含子查询。

2

键表达式未包含对至少一个列的引用。

3

键表达式引用了专用寄存器,或者键表达式引用了依赖于专用寄存器值的函数。

5

键表达式包含用户定义的函数。

6

同一个键表达式在索引定义中多次出现。

15

键表达式引用了全局变量,或者键表达式引用了依赖于全局变量值的函数。

16

键表达式引用了序列。

17

键表达式引用了类型不受支持的函数:

  • 非确定函数
  • 具有外部操作的函数
  • 访问级别不受支持的函数:
    • READ SQL DATA
    • MODIFIES SQL DATA
18

键表达式包含数据类型不受支持的值。

19

键表达式包含聚集函数或 OLAP 规范。

20

索引定义包含 SCOPE 子句,并且键表达式包含下列其中一项内容:

  • 取消引用操作
  • TYPE 谓词
  • CAST 规范
21

键表达式包含 XMLQUERY 表达式或 XMLEXISTS 表达式。

22

尝试对不支持基于表达式的索引的表创建基于表达式的索引。

23

键表达式引用了类型不受支持的函数,例如 LIKE 谓词。

24

基于表达式的键的结果数据类型不支持索引。

用户响应

请更正键表达式中的错误,然后重新发出该语句。

sqlcode:-356

sqlstate:429BX

SQL0359N 标识列或者序列的值范围用完。

说明

数据库管理器尝试为标识列或序列对象生成一个值,但允许的所有值都已分配。

无法处理该语句。

用户响应

对于标识列,用标识列的更大范围的值来重新定义该表。如果已经执行了将值范围限制为小于该列的数据类型范围的 MAXVALUE 或 MINVALUE 规范,那么可以改变该列以便扩展有效值的范围。否则,必须重新创建标识列,而它又要求重新创建表。首先删除现有的表,然后用标识列的另一数据类型重新创建该表,指定比标识列的当前数据类型具有更大值范围的数据类型。

对于序列对象,以更大的值范围重新定义序列。如果 MAXVALUE 或 MINVALUE 子句将值的范围限制为小于序列对象的数据类型的范围,那么可以改变该序列以便扩展有效值的范围。否则,删除该序列对象,再重新发出 CREATE SEQUENCE 语句,它指定了允许更大值范围的数据类型。

sqlcode: -359

sqlstate:23522

SQL0360W 因为表 表名 处于“Datalink 协调暂挂”(DRP)或“Datalink 协调不可能”(DRNP)状态,所以 DATALINK 值可能无效。

说明

因为表 表名 处于“Datalink 协调暂挂”(DRP)或 “Datalink 协调不可能”(DRNP)状态,所以该表中的 DATALINK 值可能无效。当处于这些状态之一时,将不能保证对 DB2 Data Links Manager 上的文件的控制。

语句处理继续。

用户响应

请参阅《管理指南》以了解有关“Datalink 协调暂挂”(DRP)和“Datalink 协调不可能”(DRNP)状态的信息以执行适当的操作。

sqlcode:+360

sqlstate:01627

SQL0361W 操作成功,但是该操作的某些部分不成功。标记 消息标记-1消息标记-2 提供了有关操作 消息标记-3 的更多详细信息。

说明

操作成功,成功地完成了所指定的操作的某些部分,但是此操作的某些部分不成功。

用户响应

根据操作 消息标记-3 来确定要执行的操作:SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS - 未能成功地重新验证某些指定为要重新验证的对象,因为它们引用的对象中至少有一个不存在或者仍然无效。未重新验证的一个对象是 消息标记-1,因为它引用了 消息标记-2 对象。如果仍然需要重新验证尚未重新验证的对象,请创建应存在的所有对象,并更正要重新验证的对象所引用的仍然无效的所有对象。SYSCAT.INVALIDOBJECTS 目录视图中包含有关这些无效对象的信息。如果 消息标记-1 是指一个许可权或掩码对象,而 消息标记-2 包含 CREATE PERMISSION 或 CREATE MASK,请确保运行 ADMIN_REVALIDATE_DB_OBJECTS 的用户具有 SECADM 权限。

sqlcode:+361

sqlstate:0168B

SQL0364W 在执行 运算 运算期间,发生了 DECFLOAT 异常 异常类型

说明

在对数据类型为 DECFLOAT 的字段执行 运算类型 运算时,发生了异常 异常类型。在处理算术表达式时发生了该异常。

异常类型 的可能值包括:
  • 对于下溢异常,为 UNDERFLOW
  • 对于溢出异常,为 OVERFLOW
  • 对于不精确的异常,为 INEXACT
  • 对于无效的运算异常,为 INVALID OPERATION
  • 对于除零异常,为 DIVISION BY ZERO
运算类型 的可能值包括:
  • 对于加法运算,为 ADDITION
  • 对于减法运算,为 SUBTRACTION
  • 对于乘法运算,为 MULTIPLICATION
  • 对于除法运算,为 DIVISION
  • 对于取负运算,为 NEGATION
  • 对于内置函数运算,为 BUILT-IN FUNCTION

可能是由于已对此运算转换为 DECFLOAT 的数据的临时内部副本,而发生了 DECFLOAT 异常。

在对内置函数执行处理期间,可能会发生其中的任一异常。如果 运算类型 是 FUNCTION,那么在处理输入值、中间值或最终值时发生了异常。原因可能是参数的值超出了范围。

语句处理继续。

用户响应

要阻止返回此警告,请检查对其发出警告的表达式,以查看是否可以确定异常的原因或可能原因。异常可能与数据相关,在这种情况下,将必须检查发生警告时正在处理的数据。请参阅 SQL Reference 以获取受支持的 DECFLOAT 值范围。

sqlcode:+364

sqlstate:0168C

sqlstate:0168D

sqlstate:0168E

sqlstate:0168F

SQL0365N 未处理该语句,因为位于位置 位置 的扩展指示符变量的值无效。

说明

可以通过将指示符变量与主机变量配合使用在应用程序中表示 SQL 空值。还可以通过将扩展指示符与主机变量配合使用来表示缺省值或未指定的值。

以下是有关扩展指示符的用法及使用位置的一些限制。例如,缺省值 (-5) 或未指定的值 (-7) 不得用于 VALUES 子句(可指定多行值)中的扩展指示符变量。

当缺省值 (-5) 或未指定的值 (-7) 用在不允许使用这些值的上下文中时,会返回此消息。

运行时标记 位置 中的诊断信息:

  • 通常,运行时标记 位置 所提供的位置是使用扩展指示符的主机变量的序数。
  • 如果 position 为 0,那么扩展指示符支持中会出现不匹配。未对动态预编译的 UPDATE 语句显示启用或禁用扩展指示符支持,并且在对动态预编译的 SELECT 语句(更新的目标)显示启用或禁用的扩展指示符支持与绑定或预编译的扩展指示符支持之间存在不匹配。

用户响应

将扩展指示符变量的值更改为对上下文可允许的值,在该上下文中将使用该值。

如果 位置 为 0,请采用下列其中一种方式作出响应:

  • 显式启用或禁用对动态预编译的 UPDATE 语句的扩展指示符支持。
  • 确保对动态预编译的 SELECT 语句(更新的目标)指定的扩展指示符支持与绑定或预编译的扩展指示符支持相同。

sqlcode:-365

sqlstate:22539

SQL0368N 未向数据库注册 DB2 Data Links Manager dlm-名称

说明

未向数据库注册 DB2 Data Links Manager dlm-名称。如果将数据库管理器配置参数 DATALINKS 设置为 NO,那么可以忽略已注册的 DB2 Data Links Managers。可能已经使用 DROP DATALINKS MANAGER 命令删除了 DB2 Data Links Manager。可能当前已注册了同名的 DB2 Data Links Manager 的新的替代者; 在这种情况下,错误与先前删除的该 DB2 Data Links Manager 的一个或多个替代者有关。

无法处理该语句。

用户响应

确保数据库管理器配置参数 DATALINKS 设置为 YES。应该使用 Reconcile 实用程序来除去与先前删除的 DB2 Data Links Manager 相链接的 DATALINK 值。有关其他详细信息,请参阅《命令参考》中有关 DROP DATALINKS MANAGER 命令的用法说明。

sqlcode:-368

sqlstate:55022

SQL0370N 位置 n 中的参数必须在 LANGUAGE SQL 函数 名称 的 CREATE FUNCTION 语句中命名。

说明

用 LANGUAGE SQL 定义的函数的每个参数都必须要有参数名

无法处理该语句。

用户响应

包括该函数的每个参数的参数名。

sqlcode:-370

sqlstate:42601

SQL0372N 对于 ROWID 列、标识列、安全标号列、“行更改时间戳记”列、“行开始”列、“行结束”列或“事务开始标识”列这些列类型,对于一个表只能指定一次。

说明

尝试执行下列操作之一:

  • 创建具有多个 IDENTITY 列的表。
  • 向已经具有 IDENTITY 列的表中添加 IDENTITY 列。
  • 创建具有多个 ROWID 列的表。
  • 向已经具有 ROWID 列的表中添加 ROWID 列。
  • 创建具有多个安全标号列的表。
  • 将安全标号列添加至已经具有一个安全标号列的表。
  • 创建具有多个“行更改时间戳记”列的表。
  • 将“行更改时间戳记”列添加至已经具有一个“行更改时间戳记”列的表。
  • 创建具有多个“行开始”列的表。
  • 向已经具有“行开始”列的表添加“行开始”列。
  • 创建具有多个“行结束”列的表。
  • 向已经具有“行结束”列的表添加“行结束”列。
  • 创建具有多个“事务开始标识”列的表。
  • 向已经具有“事务开始标识”列的表添加“事务开始标识”列。
  • 在表中多次定义某个时间段。

DB2 for z/OS 和 DB2 for iSeries 支持 ROWID 数据类型。

无法处理该语句。

用户响应

对于 CREATE TABLE 语句,仅对表指定一次所指定的属性。对于 ALTER TABLE 语句,表中已存在所指定的列。请不要尝试在表中多次定义某个时间段。

sqlcode:-372

sqlstate:428C1

SQL0373N 无法对列或者 SQL 变量 名称 指定 DEFAULT 子句。

说明

定义或更改列或 SQL 变量 名称 时指定了 DEFAULT 子句。但是,列定义或者 SQL 变量声明的数据类型不支持 DEFAULT。定义下列对象时,CREATE 或 ALTER TABLE 语句不能使用 DEFAULT 子句。

  • 标识列
  • ROWID 列
  • XML 列
  • “行更改时间戳记”列
  • 安全标号列
  • “行开始”列
  • “行结束”列
  • “事务开始标识”列
  • 使用随机依据生成方法的随机分发表的随机分发键列

无法处理该语句。

用户响应

移除 DEFAULT 子句,并重新提交该语句。

sqlcode:-373

sqlstate:42623

SQL0374N 尚未在 LANGUAGE SQL 函数 函数名 的 CREATE FUNCTION 语句中指定 子句 子句,但对该函数的主体检查表明应指定该子句。

说明

以下情况可能是此错误的原因。

如果用 LANGUAGE SQL 定义的函数体可以修改 SQL 数据,或者它调用可以修改 SQL 数据的函数或过程,那么必须指定 MODIFIES SQL DATA。

如果用 LANGUAGE SQL 定义的函数体包含子查询,或者它调用可以读取 sql 数据的函数,那么必须指定 READS SQL DATA。

无法处理该语句。

用户响应

指定子句或更改函数体。

sqlcode:-374

sqlstate:428C2

SQL0385W 对 SQL 例程中 SQLSTATE 或 SQLCODE 变量的赋值可能会被覆盖,不会激活任何处理程序。

说明

SQL 例程至少包括一个向 SQLSTATE 或 SQLCODE 特殊变量赋值的语句。这些变量是通过处理 SQL 例程中的 SQL 语句来赋值的。因此,所赋的值可能会因 SQL 语句处理而被覆盖。另外,向 SQLSTATE 特殊变量赋值时不激活任何处理程序。

成功处理了例程定义。

用户响应

不需要执行任何操作。除去对 SQLSTATE 或 SQLCODE 特殊变量的任何赋值以防止发生警告。

sqlcode:+385

sqlstate:01643

SQL0388N 在函数 函数名 中的 CREATE CAST 语句中,源 源数据类型名 和目标 目标数据类型名 都是内置类型,或它们都是同一类型。

说明

其中一种数据类型必须是用户定义的类型。源类型和目标类型不能是相同的数据类型。

无法处理该语句。

用户响应

更改源或目标的数据类型。

sqlcode:-388

sqlstate:428DF

SQL0389N 在 CREATE CAST 语句中标识的特定函数实例 特定名称 具有多个参数、具有与源数据类型不匹配的参数,或返回与目标不匹配的数据类型。

说明

强制类型转换函数必须
  • 有且仅有一个参数。
  • 该参数的数据类型必须与源数据类型相同,
  • 结果数据类型必须与目标数据类型相同。

无法处理该语句。

用户响应

选择不同的函数实例,更改源数据类型,或更改目标数据类型。

sqlcode:-389

sqlstate:428DG

SQL0390N 未处理语句,因为函数 函数名 已解析为特定函数 特定名称,此函数在使用它的上下文中无效。

说明

如果运行时标记 特定名称 是空字符串,那么该函数解析为由运行时标记 函数名 标识的内置函数。

可能会在许多情况下返回此消息。下面简要列示了一些可能会返回此消息的情况:

  • 此特定函数是标量函数、列函数或行函数,而此位置只需要表函数(例如,在查询的 FROM 子句中)。
  • 指定的函数具有 OUT 或 INOUT 参数,在其中使用此函数的上下文不受支持。仅当函数调用是复合 SQL(编译型)语句中 SET 变量语句右侧的唯一表达式时,才能调用编译型函数。
  • 所指定的函数不是一般表函数,但是指定了 typed-correlation 子句。

用户响应

通过执行下列其中一个或多个故障诊断步骤,对此错误作出响应:

  • 确认函数名和自变量是否正确。
  • 确认当前路径是否包括用于定义正确函数的模式。
  • 更改使用该函数的上下文。

sqlcode:-390

sqlstate:42887

SQL0391N 使用基于行的函数 函数名 无效。

说明

该语句使用基于行的函数 函数名,由于下列其中一种原因而不能使用该函数:
  • 在 GROUP BY 或 HAVING 子句中使用该函数,但未同时将该函数包括在选择列表中。
  • 因为该语句的递归性质,所以不能在此上下文中使用该函数。
  • 不能在检查约束中使用该函数。
  • 不能在生成的列中使用该函数。
  • 不能在下列视图定义或视图中使用该函数:指定了 WITH CHECK OPTION 子句的 视图定义,或任何依赖于指定了 WITH CHECK OPTION 子句的视图的视图。
  • 该函数的某个自变量未解析为基本表的行。这将包括这样的情况:在外连接的结果列中有可能存在 NULL 生成的行。
  • 不能对来自复制型具体化查询表的行使用该函数。

无法处理该语句。

用户响应

从不允许 函数名 的上下文中除去该函数。

sqlcode:-391

sqlstate:42881

SQL0392N 为游标 游标 提供的 SQLDA 已从先前的访存中进行了更改。

说明

该应用程序正遵循 DB2 规则 运行,并已请求将 LOB 数据作为一个 FETCH 语句中的 LOB,并作为另一 FETCH 语句中的定位器。这是不允许的。

用户响应

无法执行该语句。

要么不使用 DB2 规则,要么更改应用程序以在连续访存之间的 SQLDA 中不将数据类型代码从 LOB 更改为定位器(或相反情况)。

sqlcode:-392

sqlstate:42855

SQL0396N 在最终调用处理期间,对象类型 对象名(特定名称 特定名称)尝试执行 SQL 语句。

说明

在 FINAL CALL(调用类型 = 255)处理期间,例程 对象名(特定名称 特定名称)尝试执行 SQL 语句(而不是 CLOSE 游标)。这是不允许的。

用户响应

更改例程以在 FINAL CALL(调用类型 = 255)处理期间不发出 SQL 语句。

sqlcode:-396

sqlstate:38505

SQL0401N 运算 运算符 的操作数的数据类型不兼容或者不可比较。

说明

由于下列其中一种原因,不能处理使用 运算符 的操作:

  • 操作数的数据类型必须兼容并且可比较,但是至少有一对类型不兼容或者不可比较。
  • 操作数的数据类型是 XML,该数据类型不能(与它自己或任何其他类型)进行比较。
  • 操作数的数据类型是 DATALINK,该数据类型不能(与它自己或任何其他类型)进行比较。
  • 操作数的数据类型是结构化类型,该数据类型不能(与它自己或任何其他类型)进行比较。
  • 不能直接比较两个 Hadoop 表中类型为数组的列。
  • 不能直接比较两个 Hadoop 表中类型为行的列。

联合系统用户:此数据类型违例可发生在数据源或联合服务器上。

某些数据源未向 运算符 提供适当的值。在这些情况下,消息标记将具有以下格式:“<数据源>:未知”,指示指定的数据源的实际值未知。

无法处理该语句。

用户响应

检查所有操作数的数据类型以确保其与语句的用法可比较及兼容。

如果所有 SQL 语句操作数都正确并正在访问视图,那么检查所有视图操作数的数据类型。

在 Hadoop 表中:

  • 对于数组列,请通过每次比较一个数组元素的方式来重新构造此比较,然后重新提交该操作。
  • 对于行列,请通过每次比较该行的一个元素的方式来重新构造此比较,然后重新提交该操作。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据类型限制。

sqlcode:-401

sqlstate:42818

SQL0402N 算术函数或运算 运算符 的操作数的数据类型无效。

说明

对算术函数或运算符 运算符 指定了无效操作数。

无法处理该语句。

用户响应

更正 SQL 语句语法,使所指定的所有函数或运算符操作数都有效。

有效操作数是数字,或者能够隐式地强制类型转换为数字数据类型。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查应用于该数据源的运算符。

sqlcode:-402

sqlstate:42819

SQL0403W 新定义的别名 名称 解析为当前未定义的对象 名称-2

说明

别名 <名称> 在以下基础上定义:

  • 当前未在数据库中定义的表、视图、模块或序列
  • 解析为数据库中未定义的表、视图、模块或序列的另一个别名。

对象 <名称 2> 是未定义的对象。此对象必须在任一 SQL 语句(除 CREATE ALIAS 外)可以成功地使用新创建的别名之前存在。创建指定的别名 <名称>。

为了创建别名,一个不可用视图被认为是未定义的。

用户响应

确保未定义的对象 <名称 2> 是在 SQL 语句(除 CREATE ALIAS 外)中使用新创建的别名之前定义的。

sqlcode: +403

sqlstate:01522

SQL0404N UPDATE 或 INSERT 语句中的字符串对列 名称 而言太长。

说明

INSERT 或 UPDATE 语句指定了一个长于可存储在指示列中的最大长度字符串的值。

无法处理该语句。

注: 名称 可能在或可能不在 SQLCA 中返回,这取决于 INSERT 或 UPDATE 语句的语法。

用户响应

检查对象列的长度,更正程序或 SQL 语句,以使插入或更新字符串不超出最大长度。

sqlcode:-404

sqlstate:22001

SQL0405N 数字文字 文字 无效,因为其值超出范围。

说明

指定的数字文字不在可接受的范围内。

SQL 值的正确范围如下所示:

  • 对于 FLOAT 值:
    • 0
    • 正数范围:+2.225E-307 到 +1.79769E+308
    • 负数范围:-1.79769E+308 到 -2.225E-307。
  • -9999999999999999999999999999999。到 9999999999999999999999999999999。对于 DECIMAL 值
  • 对于 INTEGER 值而言,范围是 -2147483647 到 2147483647
  • 对于小整数 (SMALLINT) 值而言,是 -32768 到 +32767。

在特定上下文中,文字可能有导致此错误的进一步限制。

联合系统用户:此范围违例可发生在数据源或联合服务器上。位于数据源表中的 SQL 值的正确范围取决于该数据源。要确定正确的范围,请参阅该数据源的适当文档。某些数据源未向 文字 提供适当的值。在这些情况下,消息标记将具有以下格式:“<数据源>:未知”,指示指定的数据源的实际值未知。

范围集群表:范围定义的结束值小于起始值。

无法处理该语句。

用户响应

将文字值减至适当的大小。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据范围限制。

范围集群表:确保范围定义中的结束值大于起始值。

sqlcode:-405

sqlstate:42820

SQL0406N 在 UPDATE 或 INSERT 语句中的数值不在它的目标列范围内。

说明

主变量的值或在处理 UPDATE 或 INSERT SQL 语句期间计算出的值在目标列范围之外。此问题可能由对象列中出现的值、对这些值执行的 SQL 操作,或以上两者导致的。

无法处理该语句。

用户响应

有关除数字浮点之外的数字数据类型的允许范围,请参阅 SQL0405 消息的说明。
  • 对于 DECFLOAT(16) 值:
    • 0
    • 正数范围:1.000000000000000E-383 到 9.999999999999999E+384
    • 负数范围:-9.999999999999999E+384 到 -1.000000000000000E-383
  • 对于 DECFLOAT(34) 值:
    • 0
    • 正数范围:1.000000000000000000000000000000000E-6143 到 9.999999999999999999999999999999999E+6144
    • 负数范围:-9.999999999999999999999999999999999E+6144 到 -1.000000000000000000000000000000000E-6143

这些是对正常的十进制浮点数的限制。有效的十进制浮点值包括 INFINITY、-INFINITY、NAN、-NAN、SNAN 和 -SNAN 这些特殊值。但这些特殊值对于所有其他 DB2 数字类型都是非法的。

注意:对于系统目录更新,请参阅 SQL Reference 以了解可更新目录的各种列中的有效范围。

sqlcode:-406

sqlstate:22003

SQL0407N 不允许对 NOT NULL 列 名称 赋予空值。

说明

发生了下列情况之一:

  • 更新或插入值为 NULL,但是对象列在表定义中已声明为 NOT NULL。因此:
    • 空值不可插入到该列中。
    • 更新不能将该列中的值设置为 NULL。
    • 触发器中的 SET 转换变量语句不能将该列中的值设置为 NULL。
  • 更新或者插入值是 DEFAULT,但是对象列被声明为 NOT NULL,而表定义中又没有 WITH DEFAULT。因此:
    • 缺省值 NULL 不能插入该列。
    • 更新不能在该列设置缺省值 NULL。
    • 触发器中的 SET 转换变量语句不能在该列中设置缺省值 NULL。
  • INSERT 语句的列名列表省略了一列,该列声明为 NOT NULL,而表定义中没有 WITH DEFAULT。
  • INSERT 语句的视图省略了一列,该列声明为 NOT NULL 而基本表定义中没有 WITH DEFAULT。
  • ALTER TABLE 语句尝试使用 SET NOT NULL 来改变列,但是现有表数据包含一个具有空值的行。

如果 名称 的值的格式为“TBSPACEID=n1, TABLEID=n2, COLNO=n3”,那么在发生错误时,SQL 语句的列名不可用。所提供的值标识不允许空值的基本表的表空间、表和列号。

联合系统用户:联合服务器或数据源可以检测到此情况。某些数据源未向 名称 提供适当的值。在这些情况下,消息标记将具有以下格式:“<数据源>:未知”,指示指定的数据源的实际值未知。

HBase 或 Hadoop 用户:如果正在读取底层的 Hadoop 或 HBase 数据,并且发生下列其中一种情况,那么会发生此情况:

  • 底层的数据在声明为 NOT NULL 的列中包含了 NULL。
  • 在声明为 NOT NULL 的列中遇到了无效值(将隐式地视为 NULL)。

可以采用模式名.表名.列名的形式来指定 名称 的值。

无法处理该语句。

在某些情况下,标记 名称 可能不填充(SQLCA 的 sqlerrmc 字段不填充)。

用户响应

检查对象表定义以确定该表的哪些列有 NOT NULL 属性且没有 WITH DEFAULT 属性后,更正该 SQL 语句。

名称 的值的格式为“TBSPACEID=n1, TABLEID=n2, COLNO=n3”,那么可以使用下列查询来确定表名和列名:

      SELECT C.TABSCHEMA, C.TABNAME,
                    C.COLNAME
            FROM SYSCAT.TABLES AS T,
                      SYSCAT.COLUMNS AS C
            WHERE T.TBSPACEID = n1
            AND T.TABLEID = n2
            AND C.COLNO = n3
            AND C.TABSCHEMA = T.TABSCHEMA
            AND C.TABNAME = T.TABNAME

此查询所标识的表和列可能是其 SQL 语句失败了的视图的基本表。

如果 ALTER TABLE 语句返回了错误,那么在将某列设置为 NOT NULL 时修改包含空值的列的任何行数据,然后再次尝试运行该语句。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的对象定义。切记:不同数据源之间的缺省值(NULL 和 NOT NULL)不必相同。

对于 HBase 或 Hadoop 用户,验证底层数据文件中的数据是否正确,或者使用 ALTER TABLE 来更改列的可空性。

sqlcode:-407

sqlstate:23502

SQL0408N 值与其赋值目标的数据类型不兼容。目标名为 名称

说明

由 SQL 语句赋给列、参数、SQL 变量或转换变量的值的数据类型与赋值目标的已声明数据类型不兼容。

对于 Hadoop 表:

  • 不能将数组列值赋给数组变量。
  • 不能将行列值赋给行变量。
  • 复杂类型(数组或行)列值与变量不兼容,不能进行赋值。

无法处理该语句。

用户响应

检查语句和可能的目标表或视图以确定目标数据类型。确保所赋予的变量、表达式或文字值具有正确的赋值目标数据类型。

对于用户定义的结构化类型,还应将该语句的变换组中定义的 TO SQL 变换函数的参数视作赋值目标。

sqlcode:-408

sqlstate:42821

SQL0409N COUNT 函数的操作数无效。

说明

如在 SQL 语句中所指定的那样,COUNT 函数的操作数不符合 SQL 语法的规则。仅允许 COUNT(*) 和 COUNT(DISTINCT column)。

无法处理该语句。

用户响应

指定 COUNT(*) 或 COUNT(DISTINCT column)。

注意:此消息仅适用于版本 2 之前的 DB2 版本。

sqlcode:-409

sqlstate:42607

SQL0410N 数值 太长。

说明

指定的值太长。浮点字符串的最大长度为 30 个字符。十进制浮点字符串的最大长度为 42 个字符。

无法处理该语句。

用户响应

缩短指定的文字。

sqlcode:-410

sqlstate:42820

SQL0412N 从仅允许一列的子查询中返回了多列。

说明

在 SQL 语句的上下文中,指定全查询只能有一列作为结果。

无法处理该语句。

用户响应

当只允许标量全查询时,只指定一列。

sqlcode:-412

sqlstate:42823

SQL0413N 在数字数据类型转换期间发生溢出。

说明

在 SQL 语句处理期间,当从一个数字类型转换到另一个数字类型时发生溢出情况。根据 SQL 的标准规则执行数字转换。

联合系统用户:联合服务器和/或数据源处可进行数字转换。

无法处理该语句。未检索、更新或删除数据。

用户响应

检查 SQL 语句的语法,以确定错误原因。如果问题与数据相关,那么可能需要检查出错时处理的数据。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据范围限制。

sqlcode:-413

sqlstate:22003

SQL0415N 对应列的数据类型在包括集合运算符的全查询中不兼容,或在 INSERT 或全查询的 VALUES 子句的多行中不兼容。

说明

在各种语句处都有可能发生此错误。

  • 在包括集合运算(UNION、INTERSECT 或 EXCEPT) 的 SELECT 或 VALUES 语句中可能发生此错误。构成 SELECT 或 VALUES 语句的子查询或全查询的对应列不兼容。
  • 在正在插入多行的 INSERT 语句中可能发生此错误。在此情况下,在 VALUES 子句中指定的行的对应列不兼容。
  • 在将 VALUES 子句配合多行使用的 SELECT 或 VALUES 语句中可能发生此错误。在此情况下,在 VALUES 子句中指定的行的对应列不兼容。
  • 如果对两个 Hadoop 表使用 UNION ALL 子句,并且每个表都有类型为 ARRAY 的列,那么可能会发生此错误。

当构造函数中所列示的两个值的数据类型不兼容时,数组构造函数中可能就会发生此错误。

有关数据类型兼容性的详细信息,请参阅 SQL Reference 中的“赋值和比较”。

无法处理该语句。

用户响应

更正在 SELECT 语句中使用的列名或 VALUES 子句中的表达式,以使所有对应的列为兼容类型。

sqlcode:-415

sqlstate:42825

SQL0416N 不能在由非 UNION ALL 的集合运算符连接的 SELECT 或 VALUES 语句中指定长于 254 字节的结果列。

说明

由一个集合运算符连接的 SELECT 或 VALUES 语句之一指定了一个长于 254 字节的结果列。长于 254 字节的 VARCHAR 或 VARGRAPHIC 结果列只能配合 UNION ALL 集合运算符使用。

无法处理该语句。

用户响应

或者使用 UNION ALL 运算符代替 UNION,或者从 SELECT 或 VALUES 语句中除去长于 254 字节的结果列。

sqlcode:-416

sqlstate:42907

SQL0417N 要预编译的语句字符串包含作为同一运算符的操作数的参数标记。

说明

指定为 PREPARE 或 EXECUTE IMMEDIATE 的对象的语句字符串包含谓词或表达式,在该谓词或表达式中,参数标记已用作没有 CAST 规范的同一运算符的操作数。例如:
    ? > ?

无法处理该语句。

用户响应

不支持此语法。使用 CAST 规范为至少一个参数标记指定一个数据类型。

sqlcode:-417

sqlstate:42609

SQL0418N 由于此语句包含对下列其中一项内容的无效使用,因此未处理此语句:隐式类型参数标记、DEFAULT 关键字或空值。

说明

您在许多场景中都会遇到此消息,并且返回此消息的原因众多。

下面是一些有可能导致返回此消息的原因示例:

  • 指定了 DEFAULT 关键字作为日期时间算术运算的唯一自变量。
  • 在并非预编译语句的语句中使用了参数标记。(注意,在 XQuery 函数 db2-fn:sqlquery 的第一个自变量中,对 PARAMETER 函数的引用也会被视为参数标记。)
  • 空值被指定为 XML 函数(例如,XMLQUERY)的自变量。
  • CASE 表达式的所有结果表达式都具有隐式类型。

用户响应

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

  1. 标识此语句中下列各项的所有实例:
    • 隐式类型参数标记
    • DEFAULT 关键字
    • 隐式类型空值
    • 隐式类型表达式
  2. 查看参考信息,以了解任何隐式类型参数标记、DEFAULT 关键字实例、隐式类型空值或隐式类型表达式所处的上下文。
  3. 更正语句的语法。建议:
    • 使用 CAST 规范对隐式类型表达式指定数据类型
    • 将 DEFAULT 关键字的实例替换为某个值
  4. 再次执行此语句。

sqlcode:-418

sqlstate:42610

SQL0419N 十进制除法运算无效,因为结果将有一个负小数位。

说明

指定的十进制除法无效,因为它会产生一个负小数位。

内部用于计算十进制除法结果的小数位的公式是:

结果的小数位=31 - np + ns - ds

其中,np 是分子的精度,ns 是分子的小数位,而 ds 是分母的小数位。

联合系统用户:联合服务器和/或数据源处可执行十进制除法。指定的十进制除法生成对该数据源无效的小数位。

无法处理该语句。

用户响应

检查并确保可能参与十进制除法的所有列的精度和小数位。注意:在此计算中,可将整数或小整数值转换为小数。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据范围限制。

sqlcode:-419

sqlstate:42911

SQL0420N 在函数 函数名 的字符串自变量中找到无效字符。

说明

函数 函数名 的字符串自变量包含在数字 SQL 常量中无效的字符。由于使用 CAST 规范并将 函数名 作为目标数据类型,或者将一个自变量隐式强制类型转换为数字数据类型而调用了此函数。用于 SQL 语句中的函数或数据类型可能是 函数名 的同义词。

如果十进制字符在 DECIMAL 函数中指定,那么其为必须用作缺省十进制字符的字符。

用户响应

确保正转换为数字类型的字符串仅包含在数字 SQL 常量中有效的字符,如果指定,使用十进制的字符。

sqlcode:-420

sqlstate:22018

SQL0421N 集合运算符或 VALUES 子句的操作数没有相同列数。

说明

集合运算符(诸如 UNION、EXCEPT 或 INTERSECT)的操作数必须有相同的列数。VALUES 子句中的行必须有相同的列数。

无法处理该语句。

用户响应

更改 SQL 语句,使每个操作数或 VALUES 子句中的每行有完全相同的列数。

sqlcode:-421

sqlstate:42826

SQL0423N 定位器变量 变量位置 当前不表示任何值。

说明

定位器变量出错。未对其指定有效结果集定位器或 LOB 定位器变量值,已释放与该变量相关联的定位器,或者已关闭结果集游标。

如果提供 变量位置,那么它给出出错变量在指定的变量集中的序数位置。根据检测到错误的时间的不同,数据库管理器可能无法确定 变量位置

与序数位置不同,变量位置 可能具有值“函数名 RETURNS”,这表示从函数名标识的用户定义的函数中返回的定位器值出错。

用户响应

请更正程序或例程以使在 SQL 语句中使用的定位器变量在执行该语句之前具有有效值。

可以通过 SELECT INTO 语句、VALUES INTO 语句或 FETCH 语句将 LOB 值赋给定位器变量。

ASSOCIATE LOCATORS 语句返回结果集定位器值。结果集定位器值仅在基本 SQL 游标打开时有效。如果运行了落实或回滚操作,那么与游标相关联的结果集定位器就不再有效。如果这是 WITH RETURN 游标,那么确保在尝试分配它之前,打开该游标。

如果应用程序代码满足下列所有情况:

  • 应用程序包含对定义结果集(包含 LOB 列)的查询所声明的游标
  • 游标声明包含 WITH HOLD 子句
  • LOB 定位器用于引用游标结果集中的 LOB 值
  • 在关闭游标之前已经落实了工作单元

请执行下列其中一项操作来除去导致此警告情况的因素,以便成功地对应用程序进行升级:

  • 使用 PREP 命令对应用程序进行预编译,并确保指定了 SQLRULES STD 选项。
  • 如果可能,请改变应用程序以便 LOB 列作为值而不是定位器进行检索。
  • 如果可能,请改变应用程序以便游标不再使用 WITH HOLD 选项进行声明,然后在关闭游标前除去此落实。

sqlcode:-423

sqlstate:0F001

SQL0426N 对于应用程序执行环境而言,动态落实无效。

说明

在 CONNECT TYPE 2 环境或诸如 CICS 的“分布式事务处理”(DTP) 环境中执行的应用程序,尝试执行 SQL 动态 COMMIT 语句。SQL 动态 COMMIT 语句不可在此环境中执行。

联合系统用户:在传递会话中,不能执行 SQL 动态 COMMIT 语句。

用户响应

  • 使用 DTP 环境提供的落实语句执行落实。例如,在 CICS 环境中,这将是 CICS SYNCPOINT 命令。
  • 如果此语句是在存储过程中执行的,那么整个地除去该语句。

联合系统用户:注释掉 COMMIT 语句,或将它编码为静态语句。然后重新提交您的程序。

sqlcode:-426

sqlstate:2D528

SQL0427N 对于应用程序执行环境,动态回滚无效。

说明

在 CONNECT TYPE 2 环境或诸如 CICS 的“分布式事务处理”(DTP) 环境中执行的应用程序,尝试执行 SQL 动态 ROLLBACK 语句。SQL 动态 ROLLBACK 语句不可在此环境中执行。

联合系统用户:在传递会话中,不能执行 SQL 动态 ROLLBACK 语句。

用户响应

  • 使用 DTP 环境提供的回滚语句执行回滚。例如,在 CICS 环境中,这将是 CICS SYNCPOINT ROLLBACK 命令。
  • 如果此语句是在存储过程中执行的,那么整个地除去该语句。

联合系统用户:注释掉 ROLLBACK 语句,或将它编码为静态语句。然后重新提交您的程序。

sqlcode:-427

sqlstate:2D529

SQL0428N 只允许将该 SQL 语句作为工作单元的第一条语句。

说明

所发出的 SQL 语句需要在启动工作单元的其他任何 SQL 语句之前执行。以下是各种可能的情况:

  • SQL 语句必须是工作单元中的第一条语句,且已经对工作单元内的连接发出了 SQL。
  • SQL 语句必须是工作单元中的第一条语句,且 WITH HOLD 游标当前对连接是打开的。

请注意,当语句是 DISCONNECT ALL 时,它将导致对所有连接都执行 DISCONNECT,因此,如果有任何连接违反前面描述的限制,请求都将失败。

用户响应

在处理 SQL 语句之前,发出 COMMIT 或 ROLLBACK。如果有任何 WITH HOLD 游标,那么将需要将其关闭。如果语句是 SET INTEGRITY,那么除去 COMMIT THRESHOLD 子句。

sqlcode:-428

sqlstate:25001

SQL0429N 已超过并发 LOB 定位器的最大数目。

说明

DB2 支持每个工作单元的并发 LOB 定位器的最大数目为 4,000,000。

用户响应

修改程序,以便它需要较少的并发 LOB 定位器,然后再次运行该程序。例如,一旦应用程序不再需要 LOB 定位器,就使用 FREE LOCATOR 语句将它们释放。

sqlcode:-429

sqlstate:54028

SQL0430N 用户定义的函数 函数名(特定名称 特定名称)已异常终止。

说明

当指定的 UDF 在控制之中时,发生了异常终止。

用户响应

需要修正 UDF。与 UDF 的程序设计者或数据库管理员联系。在修正 UDF 之前,不应使用。

sqlcode:-430

sqlstate:38503

SQL0431N 用户已经中断用户定义的例程、触发器或匿名块。对象名:对象名。特定于对象的名称:特定名称。对象类型:对象类型

说明

当例程、触发器或匿名块在控制之中时,发生了用户中断或客户机中断。

匿名块没有对象名或特定名称,并且使用对象类型“BEGIN...END”来标识。

遇到此消息可能指示逻辑中存在一些问题,例如无限循环或等待。

用户响应

如果问题仍存在(即,中断的需要会导致相同的错误情况),请与例程、触发器或匿名块的程序设计者或者您的数据库管理员联系。

sqlcode:-431

sqlstate:38504

SQL0432N 参数标记或空值不能具有用户定义的类型名或引用目标类型名 用户定义的类型名

说明

已确定语句中的隐式类型表达式(参数标记或空值)具有用户定义的类型 用户定义的类型名 或具有带目标类型 用户定义的类型名 的引用类型,该类型与使用参数标记的上下文有关。除非隐式类型表达式是赋值的一部分(INSERT 的 VALUES 子句或 UPDATE 的 SET 子句),或使用 CAST 规范显式地将它强制类型转换为用户定义的单值数据类型或引用数据类型,否则隐式类型表达式不能将用户定义的类型或引用类型作为其数据类型。

无法处理该语句。

用户响应

将隐式类型表达式显式强制类型转换为用户定义的单值数据类型或引用数据类型。备用方法是将采用用户定义的单值数据类型的列强制类型转换为其相应的源数据类型,或者将采用引用数据类型的列强制类型转换为其相应的表示法类型。

sqlcode:-432

sqlstate:42841

SQL0433N 太长。

说明

要求被系统(内置)强制类型转换函数或调整函数截断,调用强制类型转换函数或调整函数的目的是以某种方式变换值。在使用此值处不允许截断。

正在变换的值是下列其中一项:
  • 用户定义的函数(UDF)的自变量
  • 对 UPDATE 语句的 SET 子句的输入
  • 正插入表中的值
  • 其他某个上下文中的强制类型转换函数或调整函数的输入
  • 一个被递归引用的列,其数据类型和长度由递归的初始化部分确定,且可能在递归的迭代部分中增长
  • 一个 XML 数据值正在被 XMLSERIALIZE 函数序列化为输出。

无法处理该语句。

用户响应

如果 是 SQL 语句中的文字串,那么对于其计划的使用而言太长。

如果 不是文字串,那么检查 SQL 语句以确定变换在何处发生。变换的输入太长或目标太短。

更正问题并重新运行该语句。

sqlcode:-433

sqlstate:22001

SQL0434W 已将子句 子句 的不受支持的值替换为值

说明

不支持为子句 子句 指定的值,并已使用标识的支持值 将其替换。

用户响应

如果所选值可接受,那么不需要更改。否则,指定对 子句 有效的值。

sqlcode:+434

sqlstate:01608

SQL0435N 指定了无效的应用程序定义的 SQLSTATE sqlstate

说明

由 RAISE_ERROR 函数或在 SIGNAL 或 RESIGNAL 语句上指定的 SQLSTATE 值不符合应用程序定义的 SQLSTATE 的规则。

用户响应

更正 SQLSTATE 的指定值。SQLSTATE 值必须是刚好包含 5 个字符的字符串。它必须是长度定义为 5 的 CHAR 类型,或者是长度定义为 5 或更长的 VARCHAR 类型。SQLSTATE 值必须遵循应用程序定义的 SQLSTATE 的规则。

以下是用于在 SIGNAL 或 RESIGNAL 语句上指定的 SQLSTATE 值的规则。
  • 每个字符必须来自数字集(“0”到“9”)或者非重音大写字母(“A”到“Z”)。
  • SQLSTATE 类(前两个字符)不能是“00”。
以下是用于 RAISE_ERROR 函数指定的 SQLSTATE 值的规则
  • 每一字符必须来自数字集(“0”到“9”)或者非重音大写字母(“A”到“Z”)
  • SQLSTATE 类(前两个字符)不能是“00”、“01”或“02”,因为这些不是错误类。
  • 如果 SQLSTATE 类(前两个字符)以字符“0”到“6”或“A”到“H”开始,那么子类(后三个字符)必须以范围“I”到“Z”中的一个字符开始
  • 如果 SQLSTATE 类(前两个字符)以字符“7”、“8”、“9”或“I”到“Z”开始,那么子类(后三个字符)可以为“0”到“9”或“A”到“Z”中的任何一个。

sqlcode:-435

sqlstate:428B3

SQL0436N C 语言以 NULL 结束的字符串主变量中丢失终止 NULL 字符。

说明

C 编程语言中输入主变量代码的值要求在字符串末尾有 NULL 终止符。

无法处理该语句。

用户响应

确保输入主变量的值是以 NULL 终止符结束的。

sqlcode:-436

sqlstate:22024

SQL0437W 此复杂查询的性能可能是次优的。原因码:原因码

说明

查询优化是其中一个影响应用程序性能的因素。SQL 和 XQuery 编译器执行多个步骤以生成可以执行的存取方案。

通常,当复杂查询所需要的资源却得不到时,或者当遇到了优化边界条件时,将会返回此消息。

原因码更详细地说明了性能可能为次优性能的原因:

1

由于内存约束而改变了连接枚举方法

2

由于查询复杂性而改变了连接枚举方法

3

优化器成本下溢

4

优化器成本溢出

5

查询优化类太低

6

优化器允许统计信息不一致

13

未能应用优化准则

15

选择的方案将具体化中间结果集,其大小可能超过了注册表变量 DB2_OPT_MAX_TEMP_SIZE 所强加的限制

16

查询中包含在数据库分区环境中不会并行执行的 XQuery 变换表达式。

将处理该语句。

用户响应

如果查询的性能未达到最优,请执行下列其中一项或多项操作:

  • 增大数据库配置文件中语句堆 (stmtheap) 的大小。增大 stmtheap 配置参数之后,使得重新编译语句。(原因码 1)
  • 将该语句分成较简单的数条 SQL 语句。(原因码 1、2、3 和 4)
  • 确保谓词不重复指定回答集。(原因码 3)
  • 将当前查询优化类更改为较低的值。(原因码 1、2 和 4)
  • 对查询中涉及的表发出 Runstats。(原因码 3 和 4)
  • 将当前查询优化类更改为一个更高的值。(原因码为 5)
  • 对在查询中涉及的表及其相应的索引重新发出 RUNSTATS,即,使用 AND INDEXES ALL 子句,使得表和索引统计信息一致。(原因码为 6)
  • 使用 Explain 诊断工具来获取有关未能应用优化准则的原因的更详细信息。(原因码 13)
  • 如果一个溢出排序导致了具体化,那么尝试创建一个将避免进行排序的索引。要消除警告,可增大由注册表变量 DB2_OPT_MAX_TEMP_SIZE 指定的值或者彻底取消其设置。(原因码 15)
  • 将服务器选项 CPU_RATIO、IO_RATIO、COMM_RATE 或函数映射选项 IOS_PER_INVOC、INSTS_PER_INVOC、IOS_PER_ARGBYTE、INSTS_PER_ARGBYTE、PERCENT_ARGBYTES、INITIAL_IOS、INITIAL_INSTS 设置为一个不太大也不太小的值。(原因码 3 和 4)
  • 重写该查询,以使变换表达式并行化。(原因码 16)

sqlcode:+437

sqlstate:01602

SQL0438N 应用程序生成错误或警告,其诊断文本为:文本

说明

在触发器中执行 RAISE_ERROR 函数或者 SIGNAL SQLSTATE 语句的结果是出现此错误或警告。以“01”或“02”开始的 SQLSTATE 值指示出现警告的情况。

用户响应

请参阅应用程序文档。

sqlcode:-438, +438

sqlstate:由应用程序定义

SQL0439N 用户定义的函数 函数名 是由导致错误 sqlcode 的函数 源函数 间接实现的。

说明

在用户语句中引用了函数 函数名。然而,因为 SOURCE 子句在此函数的定义中使用,结果是函数 源函数 实际上实现该函数。(这可能是从 函数名源函数 的直接或间接定义路径。)在编译时,源函数 的封装器(代表函数执行的 DB2 代码)已返回由 sqlcode 标识的错误。

用户响应

实际错误情况需要在可采取更正操作前更好地了解。查阅 sqlcode 的解释。如果 源函数 是内置函数,那么 sqlcode 应指示问题,就像在用户语句中直接引用内置函数时的情形一样。如果 源函数 是用户定义的函数,那么该消息最可能指示一个自变量的问题或函数结果的问题。

更正问题,然后再次尝试。

sqlcode:-439

sqlstate:428A0

SQL0440N 找不到具有兼容自变量的类型为 例程类型 的名为 例程名 的已授权例程。

说明

当数据库管理器找不到可用来实现引用的例程时,如果引用例程 例程名,那么会发生此错误。引起此错误的原因有下列几个:

  • 例程名 未正确指定或者在数据库中不存在。
  • 进行了限定引用,但不正确地指定了限定符。
  • 用户的 SQL 路径未包含期望的函数或方法所属的模式,且使用了一个非限定引用。
  • 用户的 SQL 路径未包含期望的例程所属的模块。
  • 从模块外部进行了模块限定的例程引用,但尚未发布该模块例程。
  • 所包括的自变量的数目不正确。
  • 函数或方法引用中包括的自变量的数目正确,但是一个或多个自变量的数据类型不正确。
  • 使用了指定自变量,这些自变量与例程 例程名称 的参数名称都不匹配。
  • 有一个或多个例程具有在当前复合语句中声明的相同名称和数目的参数。
  • 有一个或多个例程具有在外层复合语句中声明的相同名称,当前用于声明例程的复合语句就嵌套在这些复合语句中。
  • 例程不存在于具有在绑定程序包时使用的相同函数标识的数据库中(适用于静态语句)。
  • 找不到与 UPDATE 语句中所使用的属性赋值相对应的 mutator 方法。新属性值的数据类型与该属性的数据类型不同,并且不是可提升为该属性的数据类型的数据类型。
  • 例程调用程序无权执行该例程。
  • 服务器时间已复位或更改。
  • 在服务器上用不同时间或时区复原了数据库。
  • 与多分区数据库环境中的成员相关联的时间不同步。

用户响应

修正问题,然后再次尝试。这可能涉及目录访问、更改语句、授予对例程调用程序的执行特权、新函数的添加和/或 SQL 路径的更改。

sqlcode:-440

sqlstate:42884

SQL0441N 对函数 函数名 使用关键字 DISTINCT 或 ALL 无效。

说明

有几种可能的原因。
  • 在对函数 函数名 的引用中检测到圆括号内的关键字 DISTINCT 或 ALL,且该函数已解析为标量函数。对标量函数使用关键字 DISTINCT 或 ALL 是无效的。
  • 在不支持 DISTINCT 关键字的列函数中使用该关键字。这些函数包括 COVARIANCE、CORRELATION 和线性回归函数(以 REGR 开始的那些函数)。
  • 期望该函数是支持关键字 ALL 或 DISTINCT 的列函数,但未将其解析为列函数。

用户响应

  • 如果正在使用标量函数,那么除去关键字 DISTINCT 或 ALL。对于标量函数是无效的。
  • 如果该函数是不支持 DISTINCT 或 ALL 关键字的列函数,那么除去那些关键字。
  • 如果正在使用列函数,那么函数解析有问题。检查路径以查看是否期望的函数在其中一个模式中,且还在 SYSFUNCTIONS 目录中检查函数名的拼写及参数的数目和类型。

更正错误,然后再次尝试。

sqlcode:-441

sqlstate:42601

SQL0442N 在引用例程 例程名 时出错。超过了允许的最大自变量数(90)。

说明

在对例程 例程名 的引用中指定了太多的自变量。最大允许值为 90。

用户响应

通过确保使用了正确的自变量数目更正语句,然后再次尝试。

sqlcode:-442

sqlstate:54023

SQL0443N 例程 例程名称(特定名称 特定名称)返回错误 SQLSTATE,且诊断文本为 文本

说明

如果内置例程或者用户定义的例程(过程、函数或方法)失败,那么会返回此消息。

第三个运行时标记的内容 文本 在不同情况下会有所不同:

  • 如果由于用户定义的例程失败而返回此消息,那么第三个运行时标记的内容 文本 是由此例程的创建者实现的内容。
  • 通常,如果由于内置例程失败而返回此消息,那么第三个运行时标记的内容 文本 将包含嵌入的错误代码:

    示例 1 - 在此示例中,文本 是指消息 DBA7904N。

    [IBM][CLI Driver][DB2/AIX64] SQL0443N Routine 
    "SYSPROC.ALTOBJ" (specific name "ALTOBJ") has
    returned an error SQLSTATE with diagnostic text 
    "DBA7904, DBAD".  SQLSTATE=38553

    示例 2 - 在此示例中,文本 是指 sqlcode -805。

    [IBM][CLI Driver][DB2/AIX64] SQL0443N Routine 
    "SYSIBM.SQLTABLES" (specific name "TABLES") has
    returned an error SQLSTATE with diagnostic text 
    "SYSIBM:CLI:-805".  SQLSTATE=38553
  • 如果由于 SYSFUN 模式中的内置函数失败而返回此消息,那么第三个运行时标记 文本 的格式如下:
    SYSFUN:nn

    其中 nn 是原因码,其含义如下:

    01

    数字值超出范围

    02

    被零除

    03

    算术溢出或下溢

    04

    日期格式无效

    05

    时间格式无效

    06

    时间戳记格式无效

    07

    时间戳记持续时间的字符表示法无效

    08

    时间间隔类型无效

    09

    字符串太长

    10

    字符串函数中的长度或位置超出范围

    11

    浮点数的字符表示法无效

    12

    内存不足

    13

    意外错误

用户响应

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

  • 如果由于用户定义的过程、函数或例程失败而返回此消息,请查看第三个运行时标记 文本 中的任何诊断信息,并与此过程、函数或例程的编写者一起进行故障诊断以找出问题的原因。
  • 如果由于 DB2 内置过程、函数或例程失败而返回此消息,执行以下故障诊断步骤:
    1. 确定嵌入在第三个运行时标记 文本 中的错误代码。
    2. 请参阅给定 sqlcode 的详细信息。
    3. 在 db2diag 日志文件中查看其他诊断信息(例如,嵌入的错误代码的任何运行时标记的值)。

SQL0444N 例程 例程名称(特定名称 特定名称)是用库或路径 库或路径,不能访问的函数 函数代码标识 中的代码实现的。原因码:代码

说明

数据库管理器尝试访问实现例程 例程名称(特定名称 特定名称)的代码的主体,但由于原因码 代码(代码列示如下)所给出的原因,不能访问该代码主体。实现该例程的文件是由 库或路径 标识的,而函数是由 函数代码标识 标识的。

由于对可用的最大标记长度具有限制,因此,库名、路径名或者函数名可能会被截断。可以使用以下查询从系统目录视图中获取完整的库路径和函数名:

     SELECT implementation
     FROM syscat.routines
     WHERE specificname = 'specific-name'
1

路径名 库或路径 超过了最大长度(255 个字节)。

2

无法从 DB2 中检索到数据库管理器实例路径名。

3

找不到路径 库或路径

4

因为下列原因之一导致找不到 库或路径 中的文件:

  1. 在由例程 CREATE 语句定义中的 EXTERNAL 子句指定的位置未提供与例程相关联的例程库。
  2. 例程库依赖于这样一个共享库:在 LIBPATH 环境变量(对于基于 UNIX 的系统)或者 PATH 环境变量(对于 Windows 系统)中指定的目录的并置中找不到该共享库。可能会涉及多个间接级别,最终导致此原因码。例如,可以找到例程实体 X,并且还可以找到它所需要的共享库 Y。而共享库 Y 需要另一个共享库 Z,但是找不到共享库 Z。
  3. 这是一个分区数据库,而该库并不位于运行用户定义的函数的其中一个分区中。
5

没有足够的内存来装入包含该函数的库,或不能解析一个或多个符号。此原因码指示下列情况之一:

  1. 可能尚未解析一个或多个符号。例程库可能依赖于这样一个共享库:使用在 LIBPATH 环境变量(对于基于 UNIX 的系统)和 PATH 环境变量(对于 INTEL 系统)中指定的目录的并置无法找到该共享库。
  2. 例程有一个在 32 位实例中不受支持的 64 位库;或者例程有一个 32 位库或 DLL,但该库或 DLL 位于与例程定义不兼容的 64 位实例中。
  3. 没有足够的内存来装入包含该函数的库。
6

在指定的库中找不到函数 函数代码标识

7

作为函数名(函数代码标识)给定的符号不是指定的库中有效函数的名称。

8

"load" 系统功能由于此消息中给出的原因之外的原因而失败。可能尚未链接或者根本就未链接对象文件。

9

没有足够内存来解析 库或路径 中标识的库中的函数名 函数代码标识

10

"loadquery" 系统调用失败。只有在 UNIX 操作系统上才会发生这种情况,它是尚未正确安装数据库管理器的一种症状。

11

代理进程正搜索应在 libdb2.a 库中的特定数据库管理器函数,但找不到。只有在 UNIX 操作系统上才会发生这种情况,它是未正确安装数据库管理器的一种症状。

15

系统访问或网络访问被拒绝。在 Windows 环境中,如果例程定义语句中的 EXTERNAL NAME 规范不指定完整路径,或者 db2_installation_path\function 目录中不存在该函数,那么会发生此情况,因而必须使用 PATH 环境变量来进行搜索。例如,如果 PATH 中在包含您的函数的目录前面有 LAN 驱动器,而实例正在 SYSTEM 帐户下运行,那么可能会产生此原因码。

16

找到了多个可以与函数 函数代码标识 匹配的 Java 方法。

其他:

发生了无法识别的系统故障。

联合系统用户:如果此用户定义的函数是函数模板(因此无需将代码保留在联合服务器上),那么考虑修改 SQL 语句或统计信息以便在远程数据源上对此函数求值。

用户响应

对每个原因码给出:

1

需要更改例程定义以指定较短的路径,或者数据库管理器实例路径名太长。分析 DB2 目录视图中的例程定义,以确定要执行的操作。可能需要将函数体移到一个路径名较短的目录中。

2、10 和 11

咨询系统管理员,并向他们提供相应原因码的完整文本。

3、6 和 7

咨询例程创建者或数据库管理员。并向他们提供相应原因码的完整文本。将需要更正例程定义或例程库的位置。

4

按消息说明中提供的原因将可以采用的解决方案进行了分组:

  1. 使例程库与可用的例程相关联:
    • 更正例程定义 EXTERNAL 子句值,或者验证例程库是否位于由 EXTERNAL 子句指定的位置。
    • 对于内置例程,如果您最近已将数据库更新为另一个需要更新系统目录的修订包级别,那么发出“将数据库更新为当前发行版”命令以更新包含内置例程的系统目录,然后重新启动此实例。
    • 验证数据库管理器是否可以访问例程库。对于受防护的例程,验证受防护进程的所有者是否对库或 DLL 具有 EXECUTE 访问许可权。对于不受防护的例程,验证实例所有者是否对库或 DLL 具有读访问许可权。
  2. 应重新链接例程,或者用户应验证 LIBPATH(UNIX)或 PATH(INTEL)中是否提供了相关库。使用 db2set 命令来将 LIBPATH 更新为包括库或 DLL 所在的路径。例如,db2set db2libpath=/db2test/db2inst1/sqll
  3. 在分区数据库中,与用户定义的函数相关联的库在数据库的所有分区上都必须可作为 库或路径 来访问。验证是否已将例程库部署至数据库的所有分区上的功能目录。
5

已对可以采用的解决方案进行排序,以便与消息说明中提供的原因相匹配:

  1. 可能会涉及多个间接级别,最终导致此原因码。例如,可以找到例程实体 X,它需要共享库 Y(也可以找到),而共享库 Y 需要另一个共享库 Z,但是无法找到共享库 Z。应重新链接例程库,或者用户应验证 LIBPATH(UNIX)或 PATH(INTEL)中是否提供了所有相关库。使用 db2set 命令来将 LIBPATH 更新为包括库所在的路径。例如:db2set db2libpath=/db2test/db2inst1/sqll
  2. 使用受支持的库。
  3. 如果确定内存不足,那么可能需要更改系统配置,为 DB2 腾出更多的可用内存。
8

确保正确链接了模块。

9

与例程创建者或数据库管理员联系,确保正确链接了包含该函数的库。可能需要更改系统配置以便为数据库服务器提供更多内存。

15

验证例程定义语句中的 EXTERNAL NAME 子句是否包含完整路径,或者函数是否存在于 db2_installation_path\function 目录中。

如果存在其中任何一种情况,并且发生错误的原因是实例运行时所使用的帐户无权访问 PATH 环境变量中包含您的函数的目录之前的 LAN 驱动器,那么您需要重新配置 DB2 服务,以便使用有权访问 PATH 环境变量中的所有网络路径的用户帐户运行。

将用户帐户指定给 DB2 服务时,请确保对帐户授予了所有必需的高级用户权限。

16

验证例程定义语句的 EXTERNAL NAME 子句中引用的 库或路径 类是否包含函数 函数代码标识,可以根据例程定义语句中的 SQL 数据类型来解析该函数,而不会具有不确定性。

如果在例程定义语句中使用 PARAMETER STYLE HIVE 定义了例程,请检查例程实现是否有多个 函数代码标识 方法。例如,如果有多个 函数代码标识 方法,请确保任何两个方法在可以使用相互替换的 java.lang.String 类或 org.apache.hadoop.io.Text 时,不包含相同的参数列表。

其他:

记下代码并咨询系统管理员。

联合系统用户:如果此用户定义的函数是函数模板(且因此无需代码驻留在联合服务器上),那么可能要考虑修改 SQL 语句或统计信息以便在远程数据源上对此函数求值。

sqlcode:-444

sqlstate:42724

SQL0445W 已被截断。

说明

当系统(内置)强制类型转换函数、调整函数或代码页转换函数以某种方式变换值 时,该值被截断。这是警告情况。

正在变换的值可以是下列其中一项:

  • 例程(用户定义的函数 (UDF) 或方法)的输出,且是因例程定义中的 CAST FROM 规范而进行变换的。
  • 源于另一个函数并且需要对结果进行变换的例程(用户定义的函数 (UDF) 或方法)的输出。
  • 在处理期间需要执行代码页转换(例如,由于字符串长度单位规范而需要转换)的内置字符串处理例程的输出。

用户响应

确保输出是期望的输出并且截断未产生任何意外的结果。

sqlcode:+445

sqlstate:01004

SQL0447W 语句包含涉及子句 子句 的冗余规范。

说明

语句中多次包括 子句 关键字。这是一个警告条件。

用户响应

如果是有意造成冗余,或者如果可以确定其不会有有害结果,那么不需要任何响应。所谓“有害”类型指的是可包括,例如,某些其他期望关键字的省略。

sqlcode:+447

sqlstate:01589

SQL0448N 定义例程 例程名 时出错。已超过允许的最大参数个数(对于用户定义的函数和方法为 90 个,对于存储过程为 32767 个)。

说明

定义例程 例程名 时指定了太多的参数。例程定义语句可以是 CREATE FUNCTION、CREATE PROCEDURE、CREATE TYPE(方法定义)、或 ALTER TYPE(方法定义)。

用户响应

更改该语句以包括较少的参数。

sqlcode:-448

sqlstate:54023

SQL0449N 定义例程 例程名 的语句在 EXTERNAL NAME 子句中包含无效格式化的库/函数标识。

说明

在用户定义的函数(UDF)、用户定义的方法或过程 例程名 的 CREATE 语句的 EXTERNAL NAME 子句中发现错误。库/函数标识遵循以下规则:

对于 LANGUAGE C,名称的格式为“<a>”或“<a>!<b>”,如下所示:
  • <a> 是包含要调用的例程(函数)的文件名
  • <b> 是 <a> 内将作为例程的实体调用的入口点(函数)。如果省略 <b>,那么将使用 <a> 的缺省入口点。
对于 LANGUAGE OLE,名称的格式为“<a>!<b>”,如下所示:
  • <a> 是 OLE 对象的程序标识或类标识
  • <b> 是要调用的对象方法。
对于 LANGUAGE JAVA 和 LANGUAGE CLR,名称的格式为“<a>:<b>!<c>”,如下所示:
  • <a> 是类所在的 jar 标识(LANGUAGE JAVA)或汇编文件(LANGUAGE CLR)。“<a>:”对于 LANGUAGE JAVA 是可选的,如果省略它,那么相应的类必须驻留在函数目录或 CLASSPATH 中。
  • <b> 是要调用的方法所在的类
  • <c> 是要调用的方法。对于 LANGUAGE JAVA,“.<c>”可用作“!<c>”的备用项

对于所有语言,在单引号、对象标识或分隔符号之间都不允许前导空白字符或结尾空白字符(例如,“ <a> ! <b> ”无效)。但是,如果平台允许,路径和文件名可以包含空格。

对于所有文件名,都可以通过使用名称的简短格式(示例:math.a(在 UNIX 上)和 math.dll(在 Windows 上))或标准路径名(示例:/u/slick/udfs/math.a(在 UNIX 上)和 d:\udfs\math.dll(在 Windows 上))来指定文件。如果使用文件名的简短格式,那么该文件必须位于如下所示的位置:
  • 如果平台为 UNIX 或者例程为 LANGUAGE CLR 例程:在函数目录中
  • 否则,如果平台为 Windows:在系统 PATH 中
文件扩展名(示例:.a (在 UNIX 上)和 .dll(在 Windows 上))应始终包括在文件名中。

用户响应

更正问题,然后重试。原因可能是在名称的开头或结尾包括空格或“!”或“:”。

sqlcode:-449

sqlstate:42878

SQL0450N 例程 例程名(特定名称 特定名称)生成了太长的结果值、SQLSTATE 值、消息正文或暂存区。

说明

在从例程 例程名 (特定名称 特定名称)返回时,数据库管理器检测到返回的字节数多于分配给下列其中一项的字节数:
  • 结果值(基于例程定义)。有几种可能的原因:
    • 太多字节移入了结果缓冲区。
    • 数据类型是数据值必须由空值定界的数据类型,如 VARCHAR(n),而定界的空值不在定义的大小范围内。
    • 数据库管理器期望在该值之前有长度为 2 字节或 4 字节的值,而此长度超过了定义的结果大小。
    • 例程返回一个 LOB 定位器,而与此定位器相关的 LOB 值的长度超过定义的结果大小。

    “例程”中结果自变量的定义必须符合对数据类型的需求。

  • SQLSTATE 值(包括 NULL 终止符在内为 6 字节)
  • 消息正文(包括 NULL 终止符在内 71 字节)。
  • 暂存区内容(在 CREATE FUNCTION 上声明的长度)。 

这是不允许的。

如果例程改变了暂存区的长度字段,那么也将返回此错误。

用户响应

咨询数据库管理员,或例程的程序设计者。

sqlcode:-450

sqlstate:39501

SQL0451N 在定义例程 例程名 的语句中,数据项 定义包含不适用于用给定语言编写的非有源例程或者定义为自治例程的例程的数据类型 类型

说明

在定义例程 例程名 的语句的 数据项 部分中产生了错误。用户的语句包含了无效的类型 类型,或者包含了基于无效类型 类型 的用户定义的类型(UDT)。例程定义可以是 CREATE FUNCTION、CREATE PROCEDURE、CREATE TYPE(方法定义)、或 ALTER TYPE(方法定义)。

数据项 是在语句中标识问题区的标记。例如,“PARAMETER 2”或“RETURNS”或“CAST FROM”。

在自主事务中,可以落实该事务中的语句块,即使该事务被回滚亦如此。您可以通过在 CREATE PROCEDURE 命令中使用 AUTONOMOUS 关键字来创建过程,该过程将落实它的工作,即使从被回滚的工作单元中调用该过程亦如此。

用户响应

确定发生了何种情况并执行更正操作。可能的更正操作包括:

  • 将例程定义更改为受支持的类型;例如,从 DECIMAL 更改为 FLOAT。这可能涉及例程实体本身的更改,在使用此例程时还可能涉及强制类型转换函数的使用。
  • 创建新的(有适当基础的)用户定义的类型,或更改现有的 UDT 定义。

sqlcode:-451

sqlstate:42815

SQL0452N 不能访问主变量 变量位置 引用的文件。原因码:原因码

说明

在尝试访问或正在访问由第 n 个主变量引用的文件时出错,其中 n = 变量位置,原因由 原因码 给出。如果不能确定主变量的位置,那么将 <变量位置> 设置为 0。可能的原因码如下所示:
  • 01 - 文件名长度无效,或文件名和/或路径格式无效。
  • 02 - 文件选项无效。它的值必须是下列值之一:
    SQL_FILE_READ
              - 从现有文件中读取
    SQL_FILE_CREATE
              - 创建新文件以进行写入
    SQL_FILE_OVERWRITE
              - 覆盖现有文件。      如果文件不存在,            则创建该文件。SQL_FILE_APPEND
              - 追加至现有文件。      如果文件不存在,            则创建该文件。
  • 03 - 找不到该文件。
  • 04 - 为与现有文件同名的文件指定了 SQL_FILE_CREATE 选项。
  • 05 - 对该文件的访问被拒绝。用户无权打开该文件。
  • 06 - 对该文件的访问被拒绝。该文件正以不兼容的方式使用。要写入的文件是以互斥方式打开的。
  • 07 - 写文件时磁盘已满。
  • 08 - 读文件时遇到意外的文件结束。
  • 09 - 访问文件时遇到介质错误。
  • 10 - 读文件时遇到不完整的或无效的多字节字符。
  • 11 - 将数据从文件代码页转换为应用程序的图形字符代码页时遇到错误。

用户响应

对于原因码 01,更正文件名长度、文件名和/或路径。

对于原因码 02,指定有效的文件选项。

对于原因码 03,确保在尝试访问文件前指定的文件已存在。

对于原因码 04,如果文件不再是必需的,那么删除该文件,或指定当前不存在的文件名。

对于原因码 05,确保用户具有对文件的访问权(更正文件许可权)。

对于原因码 06,使用另一文件,或者,如果一定要访问该文件,可修改应用程序来确保文件不会被并发访问。

对于原因码 07,删除不必要的文件以释放磁盘空间,或者指定驻留在另一具有足够磁盘空间的驱动器/文件系统上的文件。同时,确保未达到操作系统或用户文件大小限制。如果应用程序代码页使用多字节编码方案,那么有可能只写入了最后一个字符的一部分,因此,确保文件仅包含全型的字符。

对于原因码 08,如果文件要用于输入,那么确保在文件全部读入以前不要对其进行修改。

对于原因码 09,更正文件所在的介质上的所有错误。

对于原因码 10,确保文件包含基于应用程序代码页的有效多字节字符,或者在与文件的内容相同的代码页下运行时提交请求。

对于原因码 11,确保已安装了文件的代码页(例如日文 EUC)和应用程序的图形代码页(例如 UCS-2)之间的字符转换支持。

sqlcode:-452

sqlstate:428A1

SQL0453N 在定义例程 例程名 的语句中的 RETURNS 子句发现有问题。

说明

已标识对例程 例程名 的结果进行强制类型转换的问题。CAST FROM 数据类型不能强制类型转换成 RETURN 数据类型,而应该是此类型。请参阅 SQL Reference 以了解有关在数据类型之间进行强制类型转换的详细信息。

用户响应

更改 RETURNS 或者 CAST FROM 子句,以使 CAST FROM 数据类型可强制类型转换成 RETURN 数据类型。

sqlcode:-453

sqlstate:42880

SQL0454N 例程 例程名称 的定义中提供的特征符与另外某个例程的特征符相匹配。

说明

函数的特征符由函数名、为函数定义的参数数目和一个有序参数类型列表组成。

方法的特征符由方法名、方法的主题类型、对方法定义的参数数目以及有序的参数类型列表组成。

过程的特征符由过程名称及为该过程定义的参数数目(不考虑数据类型)组成。

在下列情况下可能会出现此状况:

  • 在模式、模块或复合 SQL(编译型)语句中已经有函数或过程 (例程名称) 与要创建的函数或过程具有相同的特征符。如果您正在改变模块以对已定义的例程原型添加例程主体,那么表明该例程已经有例程主体定义。
  • 外部的复合 SQL(编译型)语句已经有过程 (例程名称) 与要声明的过程具有相同的名称。
  • 已经有一个主题类型的方法 (例程名称) 与要添加的方法规范或者要创建的方法主体具有相同的特征符。

无法处理该语句。

用户响应

确定现有例程是否已经提供了期望的功能。如果未提供,那么必需更改该例程的特征符; 例如,通过更改例程名称来进行更改。

如果您正在更改模块以便对某个已定义的例程原型添加例程主体,请检查特征符是否匹配或者是否还需要更改特征符,并确保例程名称和特定名称与已定义的例程原型的那些名称匹配。如果需要更改现有模块例程的例程主体,请更改模块以删除该例程,然后更改模块以重新创建该例程并指定新的例程主体。

sqlcode:-454

sqlstate:42723

SQL0455N 在例程 例程名中,为 SPECIFIC 名提供的模式名 模式名-1 与例程的模式名 模式名-2 不匹配。

说明

如果 SPECIFIC 名被指定为一个有着两部分的名称,那么 模式名-1 部分必须与 例程名模式名-2 部分相同。注意,例程名模式名-2 部分 可能已直接指定,或者可能已将它缺省为语句的授权标识。如果例程是一个方法,那么 模式名 是指该方法的主题类型的模式名。

用户响应

更正语句,然后再次尝试。

sqlcode:-455

sqlstate:42882

SQL0456N 在例程 例程名 的定义中,SPECIFIC 名称 特定名称 已存在于模式或模块中。

说明

用户已在例程 例程名 的定义中提供显式的 SPECIFIC 名称 特定名称,但是此名称已是模式或模块中某个函数、方法或过程的 SPECIFIC 名称。

用户响应

选择新的 SPECIFIC 名称,然后再次尝试。

sqlcode:-456

sqlstate:42710

SQL0457N 函数、方法、用户定义的数据类型或结构化数据类型属性不能称为 名称,因为它是保留给系统使用的。

说明

因为指定的名称是保留给系统使用的,所以不能创建用户定义的函数、方法、用户定义的数据类型或结构化数据类型。不能用作函数名、单值类型名、结构化类型名或属性名的名称包括:
  "=","<",">",">=","<=",
  "&=","&>",,"&<",
  "!=","!>","!<","<>",
    SOME, ANY, ALL, NOT, AND, OR,
    BETWEEN, NULL, LIKE, EXISTS, IN,
    UNIQUE、OVERLAPS、SIMILAR 和 MATCH。

用户响应

为不是保留供系统使用的函数、方法、用户定义的数据类型或结构化数据类型属性选择名称。

sqlcode:-457

sqlstate:42939

SQL0458N 在按特征符来引用例程 例程名 时,找不到匹配的例程。

说明

在按特征符来引用函数、方法或存储过程 例程名 时,找不到匹配的函数、方法或存储过程。

如果所使用的数据类型可以接受参数,那么类型参数是可选的。例如,对于 CHAR(12),可指定参数(CHAR(12))或省略它(CHAR())。如果指定了该参数,那么 DBMS 将仅接受数据类型与数据类型参数的精确匹配。如果省略了该参数,那么 DBMS 将只接受数据类型的匹配。CHAR() 语法提供了一种方法来告诉 DBMS 在查找匹配函数时忽略数据类型参数。

还要注意,在 DROP FUNCTION/PROCEDURE、COMMENT ON FUNCTION/PROCEDURE 和 TRANSFER OWNERSHIP FUNCTION/PROCEDURE/METHOD 语句中,非限定引用是用语句授权标识限定的,这是可找到问题的模式。在 CREATE 函数的 SOURCE 子句中,限定来自于当前路径。在此情况下,在整个路径中没有匹配的函数。

函数不能以 COALESCE、DBPARTITIONNUM、GREATEST、 HASHEDVALUE、LEAST、MAX (scalar)、MIN (scalar)、 NULLIF、NVL、RID、RAISE_ERROR、TYPE_ID、 TYPE_NAME、TYPE_SCHEMA 或 VALUE 内置 函数作为源函数。

无法处理该语句。

用户响应

可能的响应包括:

  • 更改路径来包括正确的模式。
  • 从数据类型规范中除去参数。
  • 使用 SPECIFIC 名来引用函数或过程而不是特征符。

sqlcode:-458

sqlstate:42883

SQL0461N 不能将数据类型为 源数据类型 的值 CAST 为类型 目标数据类型

说明

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

用户响应

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

sqlcode:-461

sqlstate:42846

SQL0462W 命令或例程 命令或例程名称(特定名称 特定名称)返回了警告 SQLSTATE,其诊断文本为 文本

说明

格式为 01Hxx 的 SQLSTATE 与消息正文 正文 一起由命令或例程 命令或例程名称(特定名称 特定名称)返回给 DB2。如果 命令或例程名称 是一个命令,那么 特定名称 将包含值“*N”。

用户响应

用户需要理解警告的含意。咨询数据库管理员,或例程的程序设计者。

sqlcode: +462

sqlstate:由用户定义的函数、外部过程 CALL 或者命令调用返回的有效警告 SQLSTATE。

SQL0463N 例程 例程名(特定名称 特定名称)返回一个无效 SQLSTATE 状态,其诊断文本为 文本

说明

例程可以返回的有效 SQLSTATE 是 38xxx(错误)、38502(错误)和 01Hxx(警告)。此例程 例程名(特定名称 特定名称)返回一个无效 SQLSTATE 状态,以及消息正文 正文。该例程存在错误。

用户响应

将需要更正该例程。咨询数据库管理员,或例程的程序设计者。还可向例程的程序设计者了解错误 SQLSTATE 的应用程序意义。

sqlcode:-463

sqlstate:39001

SQL0464W 过程 过程名称 返回 生成的-nbr-结果 个查询结果集,它超出定义的限制 最大-nbr-结果

说明

正常完成了由 过程名称 命名的存储过程。但是,存储过程超出了该过程可返回的查询结果集数目上的定义限制。

生成的 nbr 结果
标识存储过程返回的查询结果集的数目。
最大 nbr 结果
标识存储过程的查询结果集的数目的定义限制。

只有第一个 最大-nbr-结果 查询结果集返回到发出 SQL CALL 语句的 SQL 程序中。

可能的原因如下所示:
  • 由于客户机强加了 DRDA 限制,因此存储过程未能返回 生成的-nbr-结果 个结果集。DRDA 客户机用 MAXRSLCNT DDM 代码点建立此限制。
  • 从 C 应用程序调用了过程。不支持对 C 应用程序处理结果集,因此,结果集在返回给 C 应用程序之前就关闭了。

用户响应

SQL 语句成功。将 SQLWARN9 字段设置为“Z”。

sqlcode:+464

sqlstate:0100E

SQL0465N 无法启动、初始化受防护方式的进程,也不能与它进行通信。原因码为 代码

说明

存在与系统有关的问题,它涉及到受防护方式例程(用户定义的函数或方法)的运行。问题的确切性质由 代码 指示。这不是用户问题。可能的原因码是:

例程进程错误
21:
无法初始化内部数据或应用程序数据。
22:
无法注册信号处理程序。
23:
无法向代理进程授予 REQUEST QUEUE 的访问许可权。
24:
无法连接至例程进程“共享内存”。
25:
无法打开 REPLY QUEUE。
26:
无法写入 REPLY QUEUE。
27:
无法创建 REQUEST QUEUE。
28:
无法读 REQUEST QUEUE。
29:
例程进程中止。
30:
例程进程捕获到 USER INTERRUPT 信号。
31:
未能卸装例程模块。
32:
无法为在模块装入/卸装中使用的控制块分配存储器。
33:
未能将 SIGINT 从代理进程发送到例程进程。
34:
初始化 OLE 库失败。
35:
初始化“OLE 数据库初始化服务组件”失败。
40:
在例程进程中发生了内部错误。
代理进程错误
41:
未能衍生例程进程。
42:
无法创建 REPLY QUEUE。
43:
无法读 REPLY QUEUE。
44:
无法打开 REQUEST QUEUE。
45:
无法写入 REQUEST QUEUE。
47:
未能向例程进程授予对 UDFP 共享内存集的访问许可权。
48:
未能向例程进程授予对 REPLY QUEUE 的访问许可权。
49:
无法为在模块装入/卸装中使用的控制块分配存储器。
50:
代理进程在运行例程代码或代理程序代码时中止。
51:
代理进程在运行非防护例程代码时捕获到 USER INTERRUPT。
60:
在例程进程中发生了内部错误。

用户响应

与数据库管理员或系统管理员联系。

sqlcode:-465

sqlstate:58032

SQL0466W 过程 过程名称 从存储过程返回 结果数目 个结果集。

说明

此消息已作为发出 CALL SQL 语句的结果返回。它指示存储过程 过程名称结果数目 个结果集与它相关联。

该语句成功完成。

用户响应

不需要执行任何操作。

sqlcode:+466

sqlstate:0100C

SQL0467W 过程 过程名称 包括另一个结果集。总共有 最大-nbr-结果 个结果集。

说明

此消息作为关闭游标的结果返回。它指示存储过程 过程名称 存在另一个结果集并且在下一个结果集上重新打开了游标。存储过程中总共有 最大-nbr-结果 个结果集。

该语句成功完成。

用户响应

不需要执行任何操作。可以继续对下一个结果集进行访存。

sqlcode:+467

sqlstate:0100D

SQL0469N 参数方式 OUT 或 INOUT)对于带有特定名称 特定名称(参数号码 号码,名称 参数名)的例程 例程名 中的参数无效。

说明

SQL 过程中的参数声明为 OUT,并且对应的自变量不是有效赋值目标。仅对于函数而言,参数声明为 OUT 或 INOUT,并且对应的自变量不是 SQL 变量、全局变量或 SQL 参数。

常量或表达式是 OUT 或 INOUT 参数的无效自变量的示例。

例如,如果为函数 my_function 声明了一个 OUT 参数,那么以下函数调用无效,因为不能对传递给 OUT 参数的自变量赋值:

SET my_variable = my_function( 1 + 2 );

用户响应

如果要调用 SQL 过程,请将输出自变量更改为有效赋值目标。如果要调用函数,请将 OUT 或 INOUT 自变量更改为 SQL 变量、全局变量或 SQL 参数。

sqlcode:-469

sqlstate:42886

SQL0470N 用户定义的例程 例程名(特定名称 特定名称)对于不能传送的自变量 自变量 具有空值。

说明

例程具有带有空值的输入自变量,但该空值是用不传递空指示符的参数样式定义的,或此参数的数据类型不支持空值。

用户响应

如果将通过空值调用例程,那么确保参数类型或输入类型能够接受空值。对于函数,还可用“RETURNS NULL ON NULL INPUT”创建函数。

sqlcode:-470

sqlstate:39004

SQL0471N 调用例程 名称 失败,因为 原因码

说明

对例程 名称 的调用失败。使用原因码 原因码 来了解有关故障原因的更多详细信息。

用户响应

如果原因码以“DSNX9”开头:
  • 在 DB2 通用数据库 z/OS 版服务器上调用了例程。在该服务器的系统控制台上可能会显示用来描述错误的 DSNX9xx 消息。参阅 DB2 UDB z/OS 版服务器的文档并更正原因码所描述的情况。
另外,下面列示了要针对所指示的原因码执行的操作:
1
因为对该产品的前发行版创建了 SQL 例程,而 DBMS 未能将它迁移到当前发行版,所以调用失败。必须删除该例程然后重新创建它,以使它再次成为可运行的。

sqlcode:-471

sqlstate:55023

SQL0472N 函数或方法 例程名(特定名称 特定名称)将一个或多个游标保持为打开。

说明

在调用语句完成之前,函数或方法 例程名(特定名称 特定名称)未关闭它的所有打开的游标。函数和方法必须在调用语句完成前关闭所有游标。

用户响应

咨询函数或方法的开发者。必须重写函数或方法以确保在调用语句完成之前关闭所有游标。

sqlcode:-472

sqlstate:24517

SQL0473N 无法创建用户定义的数据类型,因为为新数据类型指定的名称与现有内置数据类型的名称相同。

说明

当您正在尝试创建与内置数据类型同名的用户定义的数据类型,或者正在尝试对具有这种数据类型的数据库进行升级时,返回此消息。

用户响应

如果要创建新的用户定义的数据类型,请使用非保留的数据类型名称重新发出此语句。

如果要升级的数据库具有与新的产品版本中的内置数据类型同名的用户定义的数据类型,请执行下列步骤:

  1. 删除名称冲突的用户定义的数据类型以及引用此类型的数据库对象。
  2. 使用非保留的数据类型名称重新创建数据类型,然后重新创建其他已删除的对象。
  3. 升级数据库。

sqlcode:-473

sqlstate:42918

SQL0475N 不能将 SOURCE 函数的结果类型 类型-1 强制类型转换为用户定义的函数 函数名 的 RETURNS 类型 类型-2

说明

为了使源用户定义的函数(UDF)的 CREATE 有效,源函数的结果类型(类型-1)必须可通过强制类型转换为正在创建函数的 RETURNS 类型(类型-2)。不支持在这些数据类型之间进行强制类型转换。请参阅 SQL Reference 以了解有关在数据类型之间进行强制类型转换的详细信息。

用户响应

更改 RETRUNS 数据类型或 SOURCE 函数标识,以使 SOURSE 函数的结果类型可通过强制类型转换为 RETURNS 数据类型。

sqlcode:-475

sqlstate:42866

SQL0476N 在无特征符的情况下引用了例程 函数名,但该例程在其模式中不是唯一的。

说明

允许不带特征符的函数或存储过程引用,但指定的函数或存储过程 函数名 在其模式中必须是唯一的,而实际上不是。如果例程是方法,那么允许不带特征符的引用,但是此指定方法对于数据类型必须是唯一的。

注意,在 DROP FUNCTION/PROCEDURE 和 COMMENT ON FUNCTION/PROCEDURE 语句中,非限定引用是用语句授权标识限定的,这是可找到问题的模式。在 CREATE 函数的 SOURCE 子句中,限定来自于当前路径。在此情况下,路径中包含具有此名的函数的第一个模式有同名的其他函数。

联合系统用户:对于传递会话,如果语句为 CREATE FUNCTION MAPPING 语句,那么此错误指示尝试创建从一个远程函数到多个本地函数的函数映射。

用户响应

通过下列其中一项更正引用:
  • 完成特征符
  • 使用期望的例程的 SPECIFIC 名
  • 更改 SQL 路径

然后,再次尝试。

sqlcode:-476

sqlstate:42725

SQL0478N 由于存在对目标对象的一个或多个依赖关系,因此语句失败。目标对象类型:对象类型-1。依赖于目标对象的对象的名称:对象名。依赖于目标对象的对象的类型:对象类型-2

说明

如果称对象 B 依赖于对象 A,那么表示针对对象 A 执行的操作可能会显著影响对象 B。例如,删除一个表时,所有直接或间接依赖于该表的对象都有可能被删除或不可用。由于可能会对从属对象产生这些结果,因此存在对作为操作目标的对象的依赖关系时,某些类型的操作将失败。

由于存在直接或间接依赖于目标对象的其他对象而导致尝试针对该目标对象执行删除、更改、移交所有权或撤销特权失败时,将返回此消息。

下面是一些有可能导致返回此消息的场景示例:

  • 如果 对象类型-1 为 ALIAS,那么 DROP 的依赖项可以包括行许可权或者引用此别名的列掩码。
  • 如果 对象类型-1 为 SYNONYM,那么 DROP 的依赖项可以包括行许可权或者引用此同义词的列掩码。
  • 如果 对象类型-1 为 VIEW,那么 DROP 的依赖项可以包括行许可权或者引用此视图的列掩码。
  • 如果 对象类型-1 为 TABLE:
    • DROP 的依赖项可能包括行许可权或者引用了此表的列掩码。
    • 可能存在使用此表作为相应历史记录表的系统时间段时间表。
    • 如果 对象类型-2 为 INDEX,那么可能存在依赖于表列的基于表达式的索引。
  • 如果 对象类型-1 为 TABLESPACE,那么可能存在相应历史记录表位于此表空间的系统时间段时间表。
  • 对于 DB2 for z/OS 服务器,如果 对象类型-1 为 DATABASE,那么可能存在相应历史记录表位于此数据库的系统时间段时间表。

用户响应

  1. 通过使用下面这两种方法中的一种或两种,确定哪些对象直接或间接依赖于目标对象:
    • 查询系统目录。
    • 使用 GET_DEPENDENCY 过程。
  2. 移除导致此语句失败的依赖关系。
  3. 请重新发出此语句。

sqlcode:-478

sqlstate:42893

SQL0480N 尚未调用过程 过程名称

说明

在应用程序进程中尚未调用在 ASSOCIATE LOCATORS 语句中标识的过程,或者虽然调用了该过程,但是在该语句之前发生了显式或隐式落实。

用户响应

更正这些语句,以便使用来在 CALL 语句上指定过程名称的准确语法与在 ASSOCIATE LOCATORS 语句上指定过程名称的语法相同。如果使用了非限定名来调用(CALL)该过程,那么在其他语句中还必须使用只具单一部分的名称。重新发出这些语句。

sqlcode:-0480

sqlstate:51030

SQL0481N GROUP BY 子句包含嵌套在 元素-2 中的 元素-1

说明

在 GROUP BY 子句中不允许下列嵌套类型:
  • CUBE 嵌套在 CUBE、ROLLUP 或 GEL 之中
  • ROLLUP 嵌套在 CUBE、ROLLUP 或 GEL 之中
  • () 嵌套在 CUBE、ROLLUP 或 GEL 之中
  • GROUPING SETS 嵌套在 GROUPING SETS、CUBE、ROLLUP 或 GEL 之中
  • CUBE、ROLLUP、()、GROUPING SETS 嵌套在任何函数、CASE 表达式或 CAST 规范中

其中,GEL 表示在 GROUP BY 子句的语法图中显示为分组表达式列表的元素。

在某些实例中,将对 元素-2 显示值 “---”。在此情况下,“---” 表示 CUBE、ROLLUP、GROUPING SETS 或 GEL 的其中之一。

无法处理该语句。

用户响应

修改 GROUP BY 子句以除去嵌套。

sqlcode:-481

sqlstate:428B0

SQL0483N 在用户定义的函数 函数名 语句的 CREATE 中,参数的数目与 SOURCE 函数的参数数目不匹配。

说明

正尝试 CREATE 用户定义的函数 函数名,它源于另一个函数。已经标识了下列情况之一:
  • SOURCE 子句使用函数名(输入参数列表)来标识源函数,而列表中类型的数目与正创建的函数的参数数目不同。
  • SOURCE 子句使用不同的语法来标识源函数,而该函数的类型数目与正创建的函数的参数数目不同。

用户响应

SOURCE 函数的参数数目与正创建的函数的参数数目必须是相同的。SOURCE 函数的标识需要更改,以
  • 修正输入参数列表
  • 更正函数名或函数特定名来标识正确的函数。

还可能需要更正路径以便进行正确的函数解析。

sqlcode:-483

sqlstate:42885

SQL0486N BINARY 和 VARBINARY 数据类型当前仅在内部受支持。

说明

语句中的一个或多个数据类型为 BINARY 或 VARBINARY。当前版本的 DB2 不支持这种情况。

用户响应

更改数据类型,然后重新提交该语句。

sqlcode:-486

sqlstate:42991

SQL0487N 例程 例程名(特定名称 特定名称)尝试执行 SQL 语句。

说明

不允许用来实现例程实体的程序执行 SQL 语句。此例程 例程名称(特定名称 特定名称包含 SQL 语句或此例程调用一个使用 SQL 的过程,例如 SYSPROC.ADMIN_CMD 过程。

用户响应

除去任何 SQL 语句,然后重新编译该程序。审计所允许的 SQL 的级别,如在定义例程的语句上所指定的那样。

sqlcode:-487

sqlstate:38001

SQL0489N 在 SELECT 或 VALUES 列表项中的函数 函数名 生成了 BOOLEAN 结果。

说明

函数 函数名 定义为用作谓词,返回布尔结果。这样的结果在选择列表中无效。

无法处理该语句。

用户响应

更正函数名或除去函数的使用。

sqlcode:-489

sqlstate:42844

SQL0490N 在 SQL 语句或命令中直接指定的数字 数字 在此上下文(最小值最大值)中允许值的范围之外。

说明

指定了数字(数字),但是该数字在指定它的上下文中是无效的。此上下文中允许的最小值为 最小值。此上下文中允许的最大值为 最大值。n 必须在由 最小值最大值最小值 =< n => 最大值)指定的范围内。

如果创建或改变表空间,最小值和最大值可能取决于表空间的页大小。请参阅 SQL Reference 以了解有关表空间限制的详细信息。

用户响应

将语句或命令中的值 n 更改为有效值。

sqlcode:-490

sqlstate:428B7

SQL0491N 用于定义 例程名 的 CREATE FUNCTION 或 ALTER MODULE 语句必须包含 RETURNS 子句以及下列其中一项:EXTERNAL 子句(带有其他必需关键字)、SQL 函数体或 SOURCE 子句。

说明

在例程 例程名 的定义中缺少了必需的子句。如果指定了 EXTERNAL,那么还必须指定 LANGUAGE 或 PARAMETER STYLE 子句。

如果正在定义 SQL 函数,那么除非正在使用 ALTER MODULE 的 PUBLISH 操作来定义 SQL 函数原型,否则必须包括 SQL 函数体。

用户响应

添加缺少的子句,然后再次尝试。

sqlcode:-491

sqlstate:42601

SQL0492N 用户定义的函数 函数名 的 CREATE 中有问题,参数号为 号码。可能涉及与 SOURCE 函数不匹配。

说明

函数 函数名 的位置 编号 中的参数出错,并且不能执行 CREATE。源函数位置 编号 中的参数不能通过强制类型转换为正在创建的函数的相应参数。

用户响应

可能的更正包括:
  • 标识不同的源函数。
  • 更改正创建的函数的参数数据类型,以使源函数的数据类型可通过强制类型转换为此数据类型。

sqlcode:-492

sqlstate:42879

SQL0493N 例程 例程名(特定名称 特定名称)返回了一个在语法或数字上无效的日期、时间或时间戳记值。

说明

用户定义的函数(UDF)或方法 例程名(特定名称 特定名称)的主体返回了无效日期、时间或时间戳记值。

一个在语法上无效的日期值示例为“1994-12*25”:“*”应该是“-”。一个在数字上无效的时间值示例为“11.71.22”:小时中没有第 71 分钟。

用户响应

需要修正该例程。咨询 DBA 或例程的程序设计者。

sqlcode:-493

sqlstate:22007

SQL0494W 结果集数大于定位器数。

说明

在 ASSOCIATE LOCATORS 语句中指定的结果集定位器数小于存储过程返回的结果集数。返回了前 “n” 个结果集定位器值,其中 “n” 是 SQL 语句中指定的结果集定位器变量的数。

SQL 语句成功。SQLWARN3 字段设置为“Z”。

用户响应

增大在 SQL 语句中指定的结果集定位器变量数。

sqlcode:+494

sqlstate:01614

SQL0495N 成本类别 成本类别 中的估计处理器成本 估计数量-1 处理器秒数(估计数量-2 个服务单元)超过了资源限制错误阈值的 限制数量 个服务单元。

说明

动态 INSERT、UPDATE、DELETE 或 SELECT SQL 语句的预编译所得出的成本估计值超出了在资源限制规范表(RLST)中指定的错误阈值。

如果 DB2 的成本类别值为“B”,那么也会导致此错误,且在该 RLST 的 RLF_CATEGORY_B 列中指定的缺省操作会导致错误。
estimate_amount1
如果要执行已预编译好的 INSERT、UPDATE、DELETE 或 SELECT 语句时的成本估计(以处理器秒计)。
estimate_amount2
执行预编译的 INSERT、UPDATE、DELETE 或 SELECT 语句时的成本估计(以服务单元计)。
cost-category
此 SQL 语句的 DB2 的成本类别。可能值是 A 或 B。
limit-amount
在该 RLST 的 RLFASUERR 列中指定的错误阈值(以服务单元数计)。

动态 INSERT、UPDATE、DELETE 或 SELECT 语句的预编译未成功。

用户响应

如果因为成本类别值为“B”而返回了此 SQLCODE,那么原因可能是语句正在使用参数标记,或某些统计信息对于所引用的表和列不可用。确保管理员已在所引用的表上运行了实用程序 RUNSTATS。还可能是因为执行语句时将调用 UDF,或者对于 INSERT、UPDATE 或 DELETE 语句,在已更改的表上定义了触发器。检查此语句的 DSN_STATEMNT_TABLE 或 IFCID 22 记录,以便找到此 SQL 语句被置于成本类别“B”中的原因。如果不能更改该程序,或者如果不能获得统计信息,请求管理员将 RLST 的 RLF_CATEGORY_B 列中的值更改为“Y”,这允许执行该语句,或更改为“W”,这将返回警告而不是错误。

如果警告是由消耗了太多处理器资源的 SQL 语句引起的,那么尝试重写该语句以便更有效地执行该语句。另一个选择是请求管理员来增大 RLST 中的错误阈值。

sqlcode:-495

sqlstate:57051

SQL0499N 游标 游标名 已分配给过程 过程名称 中的这个或另一个结果集。

说明

尝试将游标分配给一个结果集,但已为过程 过程名称 分配多个游标。

用户响应

确定是否先前对游标分配了目标结果集。如果已为过程 过程名称 分配了多个游标,那么确保仅使用一个游标来处理存储过程的结果集。

sqlcode:-499

sqlstate:24516