SQL0000 - SQL0249

SQL0000W 语句处理成功。

说明

除非发生警告,否则 SQL 语句已成功执行。

用户响应

检查 SQLWARN0 以确保它是空白。如果为空白,那么语句已成功执行。如果不是空白,那么存在警告条件。检查其他警告指示符,以确定特定的警告条件。例如,如果 SQLWARN1 非空白,那么字符串被截断。

sqlcode:0

sqlstate:00000、01003、01004、01503、01504、01506、01509 和 01517

SQL0001N 绑定或预编译未成功完成。

说明

由于在先前消息中指定的原因,绑定或预编译请求不成功。

未创建程序包。

用户响应

请参阅消息文件中的消息。重新提交该命令。

如果正在安装样本数据库,那么删除它并再次安装样本数据库。

SQL0002N 绑定文件名无效。

说明

由于在先前消息中指定的原因,绑定文件名不能按指定方式使用。

未创建程序包。

用户响应

请参阅消息文件中的消息。重新提交该命令。

如果正在安装样本数据库,那么删除它并再次安装样本数据库。

SQL0003N 数据库名称无效。

说明

由于先前消息中指定的原因,不能按所指定方式使用数据库名称。

未创建程序包。

用户响应

请参阅消息文件中的消息。重新提交该命令。

SQL0004N 密码无效。

说明

密码包含无效的字符,或密码太长。

未创建程序包。

用户响应

重新提交该命令,并指定有效的密码。

SQL0005N 消息文件名无效。

说明

由于在先前消息中指定的原因,不能按所指定方式使用消息文件名。

未创建程序包。

用户响应

请参阅消息文件中的消息。并检查消息文件的名称。如果消息文件存在,那么检查它的属性。重新提交该命令。

SQL0006N 日期时间格式参数无效。

说明

日期时间格式参数的值不在有效范围 0 到 3 之内。

未创建程序包。

用户响应

用有效的格式参数重新提交命令。

SQL0007N 由于该 SQL 语句中包含 SQL 语句中不受支持的字符,因此未处理该语句。无效字符:字符。无效字符之前的文本:文本

说明

指定的字符不是 SQL 语句中的有效字符。文本 运行时标记指示无效字符前的 SQL 语句的 20 个字符。

联合系统用户:某些数据源未向 字符文本 运行时标记提供适当的值。在这些情况下,字符文本 将具有以下格式:“<数据源>:未知”,指示指定的数据源的实际值未知。

用户响应

移除或替换无效的字符,然后重新提交该语句。

sqlcode:-7

sqlstate:42601

SQL0008N 在主变量声明中找到的标记 标记 无效。

说明

主变量声明中存在无效语法。预编译器不能标识主变量。

无法处理该语句。语句中声明的主变量(到分号为止)均不能接受。

用户响应

检查主变量声明的语法。

SQL0009W 忽略了覆盖预编译选项的尝试。

说明

尝试覆盖预编译器选项。

忽略该选项。

用户响应

确保正确指定了所有预编译器选项。

SQL0010N 字符串 开始的字符串常量没有字符串结束定界符。

说明

语句包含一个以 字符串 开始而未正确终止的字符串常量。

无法处理该语句。

用户响应

检查该语句中指示的字符串常量中是否缺少撇号。

sqlcode:-10

sqlstate:42603

SQL0011N 注释未终止。

说明

注释未正确终止。

无法处理该语句。

用户响应

检查该语句,以确定指示的注释中是否缺少或多出了注释定界符。

SQL0012W 发生了无限制的相关。

说明

命名列发生在一个 SELECT 语句中,未被显式地限制,并且发生在一个外部选择的 FROM 子句中所指定的表中。因此,SELECT 语句中对该列的引用被当作外部引用,将产生相关。

假设相关是所期望的,处理该语句。

用户响应

确保相关是所期望的。最好显式限定期望的外部引用。

sqlcode:+12

sqlstate:01545

SQL0013N 空定界标识无效。

说明

在预编译过程中,找到了指定为空字符串的游标名、语句名、数据库名称或者授权标识。这是无效的。无法处理该语句。

用户响应

提供有效的游标名、语句名、数据库名称或授权标识。

SQL0014N 源文件名无效。

说明

对预编译器的调用中指定的源文件名包含无效的字符,或指向源文件名的指针是无效的。

未创建任何程序包。

用户响应

确保源文件名正确。

SQL0015N 主变量数据类型 标记-1 无效。而应使用 标记-2

说明

如果 WCHARTYPE CONVERT 预编译选项有效,那么必须用数据类型 'wchar_t' 而不是 'sqldbchar' 来声明图形主变量。

如果 WCHARTYPE NOCONVERT 预编译选项有效(缺省值),且 'wchar_t' 在此平台上被定义为 4 个字节的整数,那么必须用数据类型 'sqldbchar' 而不是 'wchar_t' 来声明图形主变量。

用户响应

用在消息中指定的数据类型替换主变量的当前数据类型。

SQL0017N 必须在 SQL 函数或方法中指定和执行 RETURN 语句。

说明

SQL 函数或方法不包含 RETURN 语句,或者函数或方法没有以执行 RETURN 语句来结束。

用户响应

确保函数或方法执行了 RETURN 语句。

sqlcode:-17

sqlstate:42632

SQL0020W 以下列表中的绑定或预编译命令参数或参数值将被忽略,因为它们不受目标数据库的支持:参数名或值

说明

可以通过预编译器来预编译已生成的绑定文件中存储的 SQL 语句,然后使用 BIND 命令在数据库中创建程序包。可以处理包含嵌入式 SQL 语句的应用程序源文件并使用 PRECOMPILE 命令在数据库中创建程序包。

在以下情况下,返回此警告:

  • 使用 PRECOMPILE 命令或 BIND 命令指定的一个或多个参数不受目标数据库服务器支持。
  • 使用 PRECOMPILE 命令或 BIND 命令指定的一个或多个参数的值不受目标数据库服务器支持。

用户响应

再次执行 BIND 命令或 PRECOMPILE 命令,指定受目标数据库服务器支持的参数和值。

SQL0021W 忽略无效的预编译器选项 选项

说明

消息中所指定的选项是无效的预编译器选项。

忽略该选项。

用户响应

确保正确指定了所有预编译器选项。

SQL0022W 忽略重复的预编译器选项 选项

说明

预编译器选项 选项 是重复的。

忽略该选项。

用户响应

确保所有的预编译器选项仅指定过一次。

SQL0023N 数据库名称无效。

说明

指定的数据库名称是无效的名称。

预编译终止。

用户响应

确保正确拼写数据库名称并且遵循短标识规则。

SQL0024N 未指定数据库名称。

说明

未提供进行预编译的数据库名称。

预编译终止。

用户响应

提供数据库名称。

SQL0025W 绑定或预编译完成,且带有警告。

说明

绑定或预编译成功,但发出警告。程序包和/或绑定文件是按照命令中的请求而创建的。

用户响应

请参阅消息文件中的消息。如果有必要,请更正问题并重新提交命令。

SQL0026N 密码无效。

说明

指定的密码是无效的密码。

预编译终止。

用户响应

确保所提供的密码遵循有效密码的规则。

SQL0028C 绑定文件的发行版号无效。

说明

绑定文件的发行版号与已安装的数据库管理器版本的发行版号不兼容。

该绑定文件不能配合当前的数据库管理器版本使用。无法处理此命令。

用户响应

如果可能,通过当前数据库管理器重复预编译进程。否则,只能使用以兼容的数据库管理器发行版级别创建的绑定文件。

SQL0029N 需要 INTO 子句。

说明

嵌入在应用程序中的非游标 SELECT 或 VALUES 语句必须有一个 INTO 子句来指示该语句的结果将要放置在何处。动态 SELECT 语句不允许 INTO 子句。

用户响应

将 INTO 子句添加至 SELECT 或 VALUES 语句并再次预编译应用程序。

sqlcode:-29

sqlstate:42601

SQL0030N 未指定源文件名。

说明

未提供进行预编译的源文件名。

预编译终止。

用户响应

指定源文件名。

SQL0031C 打不开文件 名称

说明

文件 名称 是必需的,但打不开。

预编译终止。

用户响应

确保指定的文件名正确且存在于文件系统中,并且文件许可权正确。

如果正在安装样本数据库,那么删除它并再次安装样本数据库。如果错误仍存在,那么重新安装数据库管理器后再安装样本数据库。

SQL0032C 无法使用文件 名称

说明

当正在读或写文件 名称 时,遇到错误。

预编译终止。

用户响应

再次尝试进行预编译。

SQL0033N 名称 是无效的绑定文件。

说明

所指定的绑定文件 名称 不是绑定文件。

绑定终止。

用户响应

确保指定了正确的文件名。

SQL0034N 未指定绑定文件名。

说明

未指定进行绑定的绑定文件名。

绑定终止。

用户响应

提供绑定文件名。

SQL0035N 打不开文件 名称

说明

打不开消息文件 名称

已终止绑定或预编译。

用户响应

确保系统可访问该文件。

SQL0036N 文件名 名称 的语法无效。

说明

如果文件输入到预编译器,那么它必须具有所使用语言的正确扩展名。如果文件输入到绑定程序,那么它必须具有扩展名 .bnd。 完全解析的文件名如果超过了平台最大长度也会导致此错误。

预编译或绑定终止。

用户响应

确保指定的文件名正确。

SQL0037W 消息文件 名称 的语法无效。

说明

对此功能而言,消息文件名 名称 在语法上不正确。

系统将输出重定向到标准输出设备。

用户响应

确保指定的文件名正确。

SQL0038W 由于在将 DB2 提供的此列表文件绑定至 DB2/MVS、SQL/DS 或 OS/400 时需要绑定选项 SQLERROR CONTINUE,因此该选项已被激活。

说明

当绑定 DB2 提供的下列列表文件时,需要 SQLERROR CONTINUE 绑定选项。
  • ddcsmvs.lst
  • ddcsvm.lst
  • ddcsvse.lst
  • ddcs400.lst

即使在绑定文件中存在有此选项认为无效的 SQL 语句,它也指示 DRDA 服务器创建程序包。因为不是所有 DRDA 服务器都支持包含在 DB2 提供的绑定文件中的所有 SQL 语句,所以 SQLERROR CONTINUE 绑定选项必须用来保证为列表文件中的所有绑定文件创建程序包。

用户响应

不需要任何响应。已为您指定了需要的绑定选项 SQLERROR CONTINUE。为了避免将来接收到此警告,指定 SQLERROR CONTINUE 绑定选项。

SQL0039N 由于绑定文件无效,绑定程序未完成处理。

说明

绑定程序不能处理该绑定文件。绑定文件有可能由于绑定文件的内容被偶然地改变而无效。

不处理绑定文件。

用户响应

如果可能,重复预编译进程以创建一个新绑定文件。否则,获得绑定文件的新副本。

SQL0040N 列表 名称 中的一个或多个绑定文件上出错。未绑定下列文件:列表

说明

由于消息文件中先前的消息中指定的原因,一个或多个绑定文件未绑定。未绑定文件列表由自 1 开始的数字组成,指示未绑定文件在列表文件中的相对位置。名称 不包括列表文件的路径规范。

在消息中仅列示前 20 个错误绑定文件。如果有多于 20 个错误的绑定文件,在列表中最后一个绑定文件名后插入省略号 (...)。

未创建一个或多个程序包。

用户响应

请参阅消息文件中的消息。检查列表文件以验证它是否包含有效名称。重新提交该命令。

SQL0041N 因为发生了终止处理的致命错误,所以没有尝试根据列表 名称 中的文件号 号码 绑定文件。

说明

在绑定过程中遇到的某些错误被认为是致命的(即,系统错误和内存错误)。如果在处理列表文件中的文件时发生这些错误中的其中一个,处理就会终止。 不会尝试绑定列表文件中的剩余文件。

当绑定列表中指定的绑定文件时发生这类错误。 注意,用于标识绑定文件的数字指示列表文件中文件的相对位置。

用户响应

请参阅与此消息一起的其他消息来解决发生的错误。重新提交该命令。

SQL0051N 保留单个程序的所有 SQL 语句所需的空间超出了它允许的最大值。

说明

程序中的所有 SQL 语句需要的空间不能装入 SYSIBM.SYSPLAN 中的列 SECT_INFO。

预编译终止。

用户响应

简化程序,或将程序分割成几个较小的独立程序,或者两项都进行。

SQL0053W 程序中未找到任何 SQL 语句。

说明

指定的源文件不包含 SQL 语句。

如果正在绑定,那么将创建一个空程序包。

用户响应

确保正在预编译或绑定正确的程序。

SQL0055N 源输入文件为空。

说明

程序源输入文件不包含数据。

预编译终止。

用户响应

确保指定了正确的输入文件。

SQL0056N 在嵌套复合语句中存在 SQLSTATE 或 SQLCODE 变量声明。

说明

在 SQL 例程中,SQLSTATE 或 SQLCODE 变量声明处于嵌套复合语句中,而不是在最外面的复合语句中。

无法处理该语句。

用户响应

仅在 SQL 例程最外面的复合语句中声明 SQLSTATE 和 SQLCODE 变量。

sqlcode:-56

sqlstate:42630

SQL0057N SQL 函数或方法中的 RETURN 语句必须包括返回值。

说明

RETURN 语句是在 SQL 函数或方法中指定的,无须指定要返回的值。

无法处理该语句。

用户响应

在 RETURN 语句上指定一个值。

sqlcode:-57

sqlstate:42631

SQL0058N SQL 过程中的 RETURN 语句值的数据类型必须是 INTEGER。

说明

在 SQL 过程中,以数据类型不是 INTEGER 的值或表达式指定 RETURN 语句。

无法处理该语句。

用户响应

在 RETURN 语句上指定一个具有 INTEGER 数据类型的值。

sqlcode:-58

sqlstate:428F2

SQL0060W 名称 预编译器正在进行中。

说明

当预编译器开始处理时,此消息被写入标准输出设备。标记 名称 指的是调用的特定语言预编译器。

继续处理。

用户响应

不需要执行任何操作。

SQL0061W 绑定程序正在进行中。

说明

当绑定程序开始处理时,此消息被写入标准输出设备。

继续处理。

用户响应

不需要执行任何操作。

SQL0062W 启动文件 名称 的 INCLUDE。

说明

遇到了一个 INCLUDE 语句。预编译器现正在处理 INCLUDE 文件。

用户响应

不需要执行任何操作。

SQL0063W 完成了文件 名称 的 INCLUDE。

说明

预编译器已完成 INCLUDE 文件的处理。将继续处理含有 INCLUDE 语句的文件。

用户响应

不需要执行任何操作。

SQL0064N 文件 名称 直接或间接地包含它本身。

说明

遇到了一个循环 INCLUDE。预编译器输入文件不能 INCLUDE 自身,也不能被它所 INCLUDE 的文件 INCLUDE。

未 INCLUDE 指定的文件。

用户响应

检查 INCLUDE 文件的嵌套,并除去任何循环。

SQL0065N 主变量声明中遇到意外的行结束。

说明

主变量声明存在无效的语法。在声明完成以前遇到行结束。

无法处理该语句。

用户响应

检查主变量声明的语法。

SQL0078N 必须为例程 例程名 指定参数名。

说明

例程 例程名 未为所有参数指定参数名。当用 LANGUAGE SQL 或 SQLMACRO 来定义例程时,所定义的每个参数都需要参数名。

无法处理该语句。

用户响应

确保所定义的每个参数都包括参数名。

sqlcode:-78

sqlstate:42629

SQL0079N 声明的全局临时表或索引 名称 的“模式”名必须是 SESSION,而不是 模式名

说明

声明的临时表或声明的全局临时表的索引的模式名 名称 必须是 SESSION。该语句正在为声明的全局临时表或声明的全局临时表的索引指定模式名 模式名。这是不允许的。

无法处理该语句。

用户响应

用下列方法之一来更改语句:
  • 将模式名更改为 SESSION。
  • 除去模式名,并让 DB2 使用缺省值 SESSION。

sqlcode:-79

sqlstate:428EK

SQL0081N 在预编译/绑定过程中返回 SQLCODE sqlcode

说明

在预编译或绑定程序时,从数据库管理器返回一个意外的 SQLCODE sqlcode

无法处理该语句。

用户响应

检查 SQLCODE 以确定问题并采取适当的措施。

SQL0082C 发生错误,它终止了处理。

说明

先前的非 SQL 错误导致了处理终止。

预编译/绑定/重新绑定终止。未创建任何程序包。

用户响应

更正导致先前错误的情况,并再次尝试执行该操作。

SQL0083C 内存分配出错。

说明

在处理期间,没有足够的内存用来继续处理。

用户响应

可以采用的解决方案包括:
  • 确保系统具有足够的实际内存和虚拟内存。
  • 移除后台进程。

如果在尝试建议的解决方案后仍然接收到此消息,请与 IBM 客户支持机构联系。

SQL0084N EXECUTE IMMEDIATE 语句包含 SELECT 或 VALUES 语句。

说明

SELECT 或 VALUES 语句在 EXECUTE IMMEDIATE 语句中使用。

无法处理该语句。

用户响应

不支持隐含的功能。准备 SELECT 或 VALUES 语句。然后使用 OPEN、FETCH 和 CLOSE。

sqlcode:-84

sqlstate:42612

SQL0085N 已定义了语句名 名称

说明

先前的 DECLARE 语句已经使用了当前 DECLARE 语句中指定的语句名称。

不处理当前的 DECLARE 语句。先前的 DECLARE 语句仍使用该语句名。

用户响应

对此语句使用另一个名称。

SQL0086C 内存分配出错。

说明

在处理期间,没有足够的内存用来继续处理。

用户响应

可以采用的解决方案包括:
  • 验证系统有必需的内存。
  • 移除后台进程。

SQL0087N 在不允许使用空值的上下文中指定了空值。

说明

在变量不能为空值的上下文中使用了空值变量。例如,可以在 OPEN 或 FETCH 语句中使用游标变量,但该游标变量的值不能为空值。无法处理该语句。

用户响应

请确保该变量的值在不允许使用空值的上下文中不为空,然后再试该请求。

sqlcode:-87

sqlstate:22004

SQL0088N 主变量 名称 是有歧义的。

说明

不能唯一地标识主变量 名称。存在具有相同限定条件的多个主变量。

无法处理该语句。

用户响应

进一步限定该主变量,或者,如果它已被完全限定,那么将它重命名。

SQL0089N 在找到 100 个错误后,结束处理。

说明

在找到 100 个错误后,预编译器或绑定程序退出处理。

用户响应

修正消息记录中指示的错误,并且重新提交该命令。

SQL0091W 预编译或绑定结束,具有 数值-1 个错误和 数值-2 个警告。

说明

预编译或绑定终止,并有指明数目的警告和错误。

预编译或绑定终止。

用户响应

如果发生了警告或错误,那么更正程序。如果有必要,请再次尝试进行预编译或绑定。

SQL0092N 因为先前的错误,未创建任何程序包。

说明

因为先前的错误,未创建任何程序包。

用户响应

更正错误,再次尝试进行预编译或绑定。

SQL0093N 在 EXEC SQL 语句终结符以前遇到输入结束。

说明

当处理 SQL 语句时,在语句终止以前遇到源文件结束。

预编译终止。

用户响应

确保 SQL 语句正确地终止。

SQL0094N 由于用户的中断请求,结束了绑定。

说明

由于用户可能按下了中断键序列,绑定终止。

处理终止。未创建程序包。

用户响应

如果需要,重新提交绑定。

如果正在安装样本数据库,那么删除它并再次安装样本数据库。

SQL0095N 因为先前的错误,未创建任何绑定文件。

说明

因为先前的错误,未创建任何绑定文件。

未创建任何绑定文件。

用户响应

更正错误,并再次尝试进行预编译。

SQL0097N 在 SQL 例程中,不支持数据类型为 LONG VARCHAR 或 LONG VARGRAPHIC 的变量或参数。

说明

SQL 例程(过程、函数或方法)不支持 LONG VARCHAR 或 LONG VARGRAPHIC 数据类型的变量或参数。

用户响应

在 SQL 例程中,不要使用数据类型为 LONG VARCHAR 或 LONG VARGRAPHIC 的变量或参数。对于 LONG VARCHAR,使用具有显式长度的 VARCHAR。对于 LONG VARGRAPHIC,使用具有显式长度的 VARGRAPHIC。

sqlcode:-97

sqlstate:42601

SQL0100W 找不到进行 FETCH、UPDATE 或 DELETE 操作的行; 或者查询的结果是一个空表。

说明

下列其中一个条件为真:
  • 找不到满足在 UPDATE 或 DELETE 语句中所指定搜索条件的行。
  • SELECT 语句的结果是一个空白表。
  • 当游标定位在结果表的最后一行之后时,执行一个 FETCH 语句。
  • 用在 INSERT 语句中的 SELECT 的结果为空。

未检索、更新或删除数据。

用户响应

不需要执行任何操作。处理可以继续。

sqlcode:+100

sqlstate:02000

SQL0101N 由于已达到内存限制、SQL 限制或数据库限制之类的限制,因此未处理语句。

说明

在尝试准备或执行超出了内存限制、SQL 限制或数据库限制之类的限制的 SQL 语句时,可能会返回此消息。在此上下文中,“内存限制”包括下列示例:

  • 语句堆 (STMTHEAP)
  • 应用程序堆 (APPLHEAPSZ)
  • 应用程序内存 (APPL_MEMORY)
  • 实例内存 (INSTANCE_MEMORY)
  • 其他进程或系统内存限制

例如,可能会由于下列原因而返回此消息:

  • 语句堆不够大,无法编译语句。(SQL 或 XQuery 编译器在编译 SQL 或 XQuery 语句时,将语句堆用作工作空间。)
  • 没有足够的应用程序内存可用于处理应用程序请求。
  • 如果该语句是用于创建或修改压缩描述的语句,那么新的压缩描述对于系统目录中相应的列而言可能太大。

在尝试执行由于过于复杂而无法编译的 SQL 语句时,也可能会返回此消息。例如,下列元素会导致语句的复杂性提高:

  • 约束,例如表检查约束或外键约束
  • 触发器
  • 行访问控制和列访问控制
联合环境:

在联合环境中,当语句超出联合服务器或联合数据源的限制时,可能会返回此消息。

代码页转换:

如果正在两个不同的代码页之间转换字符数据,那么当数据转换结果超出限制时,可能会返回此消息(即使原始数据未超出任何限制也是如此)。

用户响应

通过执行下列一项或多项操作,对此错误作出响应:

  • 使用数据库配置参数 stmtheap 增大语句堆的大小,或者通过将 stmtheap 参数设置为 AUTOMATIC 允许语句堆自动增大。
  • 通过将数据库配置参数 appl_memory 设置为 AUTOMATIC,允许自动增加为应用程序请求分配的内存量。
  • 将该语句划分为更短或更为简单的 SQL 语句。
  • 通过进行下列一种或多种更改,降低该语句的复杂性:
    • 减少该语句所涉及的约束(例如表检查约束或外键约束)的数目。
    • 减少该语句所涉及的触发器数。
    • 减少该语句所涉及的行访问控制数或列访问控制数。
联合环境:
  1. 确定是联合数据源返回了错误还是联合服务器返回了错误。
  2. 执行上述一项或多项一般操作。例如:
    • 如果此错误由联合服务器返回,请使用数据库配置参数 stmtheap 增大语句堆的大小,或者将 stmtheap 参数设置为 AUTOMATIC。
    • 简化该语句。

sqlcode:-101

sqlstate:54001

SQL0102N 字符串 开始的字符串常量太长。

说明

发生了下列情况之一:

  • COMMENT ON 语句中的注释多于 254 字节。
  • SQL CONNECT 语句中指定的应用程序服务器名多于 18 字节。
  • 字符串 开始的字符串常量的长度大于 32672 字节。长度大于 32672 字节的字符串或长度大于 16336 个字符的图形字符串只能通过从主变量赋值来指定。注意,DB2 产品系列中的其他服务器可能指定了不同的字符串大小限制。有关详细信息,请查阅相应数据库产品的文档。
  • 在 XQuery 表达式中,以 字符串 开头的字符串文字的长度超过 32672 字节。此限制是对使用 UTF-8 编码的字符串文字确定的。要在 XQuery 表达式中指定长度超过 32672 字节的字符串,必须使用数据库中的 XML 值,并且必须通过访问数据的 XQuery 函数使用那些值,或者通过使用诸如 XMLQUERY、XMLEXISTS 或 XMLTABLE 之类的 SQL/XML 函数进行赋值的 XQuery 变量使用那些值。
  • 联合系统用户:传递会话中不能超过特定于数据源的限制。例如,在传递会话中,如果将语句中包括超过 254 字节的字符文字发送给 DB2 OS/390 版,那么会导致此错误。
  • INGEST 命令中的作业标识字符串的长度超过 128 字节。
  • INGEST 命令中的字段定义中日期、时间或时间戳记格式字符串的长度超过其最大长度。日期格式字符串的最大长度为 10 字节。时间格式字符串的最大长度为 8 字节。时间戳记格式字符串的最大长度为 32 字节。

可能是数据转换正在进行,而结果字符串太长。对于运行于不同代码页下的应用程序和数据库之间的连接,字符串常量从应用程序代码页转换为数据库代码页。在某些情况下,图形字符串常量可能被进一步从数据库代码页转换为 UCS-2(UNICODE)编码,例如当用 EUC 代码页创建了数据库时。这意味着结果字符串有可能长于输入字符串。

无法处理该语句。

用户响应

对于“表注释”或“列注释”,减小注释的大小。对于 SQL CONNECT 语句,减小应用程序服务器名的长度。对于其他字符串常量,请求的功能不是交互可用的。对于在应用程序中嵌入的非 CONNECT SQL 语句上下文中发生的错误,将长串赋给主变量,然后用该变量替代 SQL 语句中的字符串文字。

联合系统用户:对于传递会话,请确定导致该错误的数据源。检查该数据源的 SQL 方言,以确定超出了哪个特定限制,并根据需要调整失败的语句。

Ingest 实用程序用户:指定少于 129 字节的 ingest 作业标识,或者指定不超过最大长度的格式字符串。

sqlcode:-102

sqlstate:54002

SQL0103N 数字文字 文字 无效。

说明

所指示的 文字 以一个数字开始,但它是无效的整数、小数或浮点文字。

联合系统用户:在传递会话中发生了特定于数据源的文字表示错误。

无法处理该语句。

用户响应

请更正无效的数字文字。联合系统用户:如果在传递会话中出错,请确定导致该错误的数据源。检查该数据源的 SQL 方言,以确定违反了哪一条文字表示法规则,并根据需要调整失败的语句。

sqlcode:-103

sqlstate:42604

SQL0104N 文本 后面找到异常标记 标记。预期标记可能包括:标记列表

说明

在文本 文本 后面的指定标记处检测到 SQL 语句中或 SYSPROC.ADMIN_CMD 过程的输入命令字符串中的语法错误。文本 字段指示无效标记前面的 SQL 语句中或 SYSPROC.ADMIN_CMD 过程的输入命令字符串的 20 个字符。

作为帮助,在 SQLCA 的 SQLERRM 字段中,提供了有效标记的部分列表作为 标记列表。此列表假定语句直到该位置为止均正确。

以命令方式将文本传递至命令行处理器 (CLP),并且此文本包含的由操作系统 shell 解释的特殊字符(例如,单引号或双引号)未使用转义字符标识时,可能会返回此消息。

无法处理该语句。

用户响应

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

  • 在指定的标记区域内检查并更正语句。
  • 如果您正通过命令方式使用 CLP 并且命令中存在特殊字符(例如,引号),请使用转义字符(例如,反斜杠字符)以使操作系统 shell 不会对这些特殊字符执行任何特殊操作。还可通过交互方式或批处理方式使用 CLP 发出此语句,以避免操作系统 shell 对这些特殊字符进行任何处理。

sqlcode:-104

sqlstate:42601

SQL0105N 字符串 开始的字符串常量无效。

说明

语句包含一个以无效 字符串 开始的字符串常量。

无法处理该语句。

用户响应

指定字符串常量的正确格式。检查图形字符串、成对的定界符以及该字符串中字节数是否为偶数。

sqlcode:-105

sqlstate:42604

SQL0106N SQL 语句正确开始,但不完整。

说明

在再也找不到输入之前,SQL 语句正确。这可能是因未能正确结束文字导致的。字符串文字需要结束引号。

此 SQL 语句的处理已结束。

用户响应

检查该语句是否带有所有必需的部分来完成期望的功能,且是否所有子句都完整。

对于 PL/I:检查分号前面的 SQL 语句是否完整。对于汇编程序:检查是否正确遵循了延续规则。(列 72 中必须要有非空白字符,延续的行必须在列 16 或之后开始。)

对于 COBOL:检查 END-EXEC 前面的 SQL 语句是否完整。

sqlcode:-106

sqlstate:42601, 42603

SQL0107N 名称 名称 太长。最大长度为 长度

说明

返回的名称 名称 太长。长度 指示了该类型的名称所允许的最大长度(以字节计)。这不包括任何转义字符(如果存在)。

联合系统用户:如果是在传递会话中,那么可能已超出特定于数据源的限制。

无法处理该语句。

注意:在对运行于不同代码页下的应用程序和数据库执行字符数据转换时,会返回此错误,这是因为转换的结果超出长度限制。

用户响应

请选择更短的名称或更正对象名的拼写。

联合系统用户:对于传递会话,请确定导致该错误的数据源。检查该数据源的 SQL 方言,以确定超出了哪个特定限制,并根据需要调整失败的语句。

sqlcode:-107

sqlstate:42622, 10901

SQL0108N 名称 名称 的限定符数是错误的。

说明

名称 名称 限定不正确。

在此上下文中,具有给定名称 名称 的对象只能有一个限定符。

一个列名被一个限定的或非限定的表名或者一个相关名所限定。在某些上下文中,一个列名需要一个表名限定符。

ALTER MODULE 语句操作的模块对象的标识必须是未限定的单一部件名称。

无法处理该语句。

用户响应

确保对象名称正确地限定。

sqlcode:-108

sqlstate:42601

SQL0109N 未处理语句或命令,这是因为以下子句在使用它的上下文中不受支持:clause

说明

当 SQL 语句或命令以不受支持的方式使用子句时,将返回此消息。

在许多不同情况下,都有可能返回此消息。以下是有可能返回此消息的情况的一些示例:

  • 子查询、INSERT 语句或 CREATE VIEW 语句包含以下其中一个子句:INTO、ORDER BY 或 FOR UPDATE。
  • 使用了 RAISE_ERROR 函数作为选择列表项,但是未将 RAISE_ERROR 函数的结果强制转型为相应的数据类型。
  • 在 XML 上下文中指定了子查询隔离或锁定请求子句。
  • 仅限于联合环境:在传递会话中违反了特定于数据源的限制。

用户响应

从语句或命令中除去该子句,然后重新提交语句或者重新运行命令。

联合系统用户:

对于传递会话,请执行以下故障诊断步骤:

  1. 确定导致该错误的数据源。
  2. 检查该数据源的 SQL 方言以确定违反了哪个特定限制。
  3. 根据需要来调整失败的语句。
  4. 重新提交语句或者重新运行命令。

sqlcode:-109

sqlstate:42601

SQL0110N 字符串 是无效的十六进制常数。

说明

十六进制常数 字符串 无效。问题为以下之一:
  • 指定了无效的十六进制数字。只允许“0 到 9”、“A 到 F”及“a 到 f”。
  • 指定了非偶数位的十六进制数。
  • 指定了超过 8000 位的十六进制数。

用户响应

更正该常量,并重新提交该语句。

sqlcode:-110

sqlstate:42606

SQL0111N 列函数 名称 不包括列名。

说明

未正确指定列函数 名称 (AVG、MIN、MAX、SUM 或 COUNT(DISTINCT)) 的规范,这是因为这些函数在操作数中必须包括一个列名。

无法处理该语句。

用户响应

指定作为列函数操作数的表达式中的列名。

注意:此错误仅适用于版本 2 之前的 DB2 发行版。

sqlcode:-111

sqlstate:42901

SQL0112N 列函数 名称 的操作数包括列函数、标量全查询或子查询。

说明

列函数的操作数不能包括:
  • 列函数
  • 标量全查询
  • 子查询
  • XMLQUERY 或 XMLEXISTS 表达式(除非作为 XMLAGG 列函数的操作数)。

在 SELECT 列表中,算术运算符的操作数不能是包含 DISTINCT 关键字的列函数。

无法处理该语句。

用户响应

更正列函数的使用以除去无效表达式,然后再次尝试。

sqlcode:-112

sqlstate:42607

SQL0113N 标识 中包含不允许的字符或不包含任何字符。

说明

SQL 变量名、参数名、安全标号组件元素或条件名 标识 包含无效字符。

SQL 变量名、参数名和条件名中只允许包含对 SQL 普通标识有效的字符。注意,因为标识是定界的,所以不执行折叠,并且大写和小写字母被认为是相互有别的。

安全标号组件元素中只允许包含对元素值有效的字符。

用户响应

更正标识,并重新提交该语句。

sqlcode:-113

sqlstate:42601

SQL0117N 赋值数目与指定的或隐含的列数或变量数不一样。

说明

在下列情况下,值的数目可能会不同:

  • 在 INSERT 语句值列表中的插入值的数目与指定的或隐含的列数不相同。如果未指定列列表,那么会隐含包括表(那些隐式隐藏的表除外)或视图中所有列的列列表。
  • 在 SET 语句或 UPDATE 语句的 SET 子句中,赋值符号右边的值数目与左边的列数或变量数不匹配。

无法处理该语句。

用户响应

请更正该语句以便为每一个指定的或隐含的列或变量指定值。

sqlcode:-117

sqlstate:42802

SQL0118N 作为 INSERT、DELETE 或 UPDATE 语句的目标的表或视图,在 FROM 子句中也被指定了。

说明

指定为 INSERT、DELETE 或 UPDATE 语句的目标的表或视图在同一条语句中的子查询的 FROM 子句中也出现。

作为 INSERT、UPDATE 或 DELETE 目标的表或视图不能也被用来提供要插入的值,或用来限定将要插入、更新或删除的行。

无法处理该语句。

此消息仅适用于 1.2 和更早版本的服务器,以及通过 DB2 Connect 访问的主机。

用户响应

不支持隐含的功能。要尝试得到希望的结果,创建对象表或视图的临时副本并且将子查询传递给该副本。

sqlcode:-118

sqlstate:42902

SQL0119N 在 SELECT 子句、HAVING 子句 或 ORDER BY 子句中指定的以 表达式开头 开始的表达式未在 GROUP BY 子句中指定,或者它在 SELECT 子句、HAVING 子句或 ORDER BY 子句中,具有列函数,但未指定 GROUP BY 子句。

说明

SELECT 语句有下列其中一种错误:
  • 标识的表达式和列函数包含在 SELECT 子句、HAVING 子句或 ORDER BY 子句中,但无 GROUP BY 子句
  • 标识的表达式包含在 SELECT 子句、HAVING 子句或 ORDER BY 子句中,但不在 GROUP BY 子句中。

标识的表达式是以 表达式开头 开始的表达式。表达式可以是单个列名。

如果在 HAVING 子句中指定了 NODENUMBER 或 PARTITION 函数,那么认为基础表的所有分区键列都处在 HAVING 子句中。

无法处理该语句。

用户响应

通过将表达式包括在 SELECT 子句、HAVING 子句或 ORDER BY 子句中的 GROUP BY 子句中,或通过从 SELECT 语句除去列函数来更正该语句。

sqlcode:-119

sqlstate:42803

SQL0120N 无效使用了聚集函数或 OLAP 函数。

说明

只能在全查询的选择列表、having 子句或者在具有一定限制条件的 WHERE 子句或 GROUP BY 子句中使用聚集函数或 OLAP 函数。

仅当一个 WHERE 子句出现在 HAVING 子句的子查询中,并且聚集函数或 OLAP 函数的自变量是对一个组的相关引用时,此 WHERE 子句才能包含聚集函数或 OLAP 函数。

仅当聚集函数或 OLAP 函数的自变量是对子查询(不同于包含 GROUP BY 子句的子查询)中列的相关引用时,GROUP BY 子句才可包含聚集函数或 OLAP 函数。

不能在 XMLQUERY 或 XMLEXISTS 表达式的自变量列表中使用 OLAP 函数。

无法处理该语句。

用户响应

更改语句以便不使用聚集函数或 OLAP 函数或仅在受支持的地方使用聚集函数或 OLAP 函数。

sqlcode:-120

sqlstate:42903

SQL0121N 在同一条 SQL 语句中多次为赋值指定了目标名称 名称

说明

同一个目标名称 名称 被指定了多次:作为 CALL 语句的 OUT 或 INOUT 自变量、在 INSERT 语句的列的列表中、在 UPDATE 语句的 SET 子句中的赋值符号的左边或者在赋值语句的左边。目标名称标识列、SQL 参数或变量。

注意,更新或插入视图(其中视图的多个列都基于基本表的同一列)时,可能会发生此错误。

无法处理该语句。

用户响应

更正该语句的语法,使每个列名仅被指定一次。

sqlcode:-121

sqlstate:42701

SQL0122N SELECT 语句中没有 GROUP BY 子句但在 SELECT 子句中包含有列名或表达式和列函数,或是列名或表达式包含在 SELECT 子句中,但不在 GROUP BY 子句中。

说明

SELECT 语句有下列其中一种错误:

  • 列名或表达式和列函数包含在 SELECT 子句中,但没有 GROUP BY 子句。
  • 列名或表达式包含在 SELECT 子句中,但不在 GROUP BY 子句中。

该列或表达式可能包含在标量函数中。

如果在 SELECT 子句中指定了 DATAPARTITIONNUM、DBPARTITIONNUM、NODENUMBER、HASHEDVALUE 或 PARTITION 函数,那么基础表的所有数据库或表分区键列都被视为在 SELECT 子句中。

无法处理该语句。

用户响应

请通过将 SELECT 子句中的列或表达式包含在 GROUP BY 子句中,或者从 SELECT 子句中除去这些列或表达式来更正该语句。

sqlcode:-122

sqlstate:42803

SQL0123N 函数 名称 中位置 n 处的参数必须是常量、关键字、变量或者常量或变量的强制转型。

说明

函数 名称 中位置 n 处的参数不是期望的元素;该参数必须是下列其中一个元素:

  • 常量(如果要求该参数为常量)
  • 关键字(如果要求该参数为关键字)
  • 变量(如果要求该参数为变量)
  • 常量或变量的强制转型(如果要求该参数为常量或变量的强制转型)

用户响应

确保函数的每个自变量都符合相应参数的定义。

sqlcode:-123

sqlstate:428I9 和 42601

SQL0125N ORDER BY 或 GROUP BY 子句中的列号码小于 1,或者大于结果表中的列数。

说明

语句中的 ORDER BY 或 GROUP BY 子句包含的列号小于 1 或大于结果表中的列数(SELECT 子句中的项数)。

无法处理该语句。

用户响应

更正 ORDER BY 或 GROUP BY 子句的语法,使每个列标识正确地标识结果表中的列。

sqlcode:-125

sqlstate:42805

SQL0127N 多次指定 DISTINCT。

说明

不能使用 DISTINCT 限定词:
  • 在 SELECT 子句和列函数中
  • 在同一个 SELECT 语句的两个或更多列函数中。

无法处理该语句。

用户响应

此错误仅适用于版本 2 之前的 DB2 发行版,以及通过 DB2 Connect 访问的主机。

sqlcode:-127

sqlstate:42905

SQL0129N 语句包含太多表名。

说明

SQL 语句包含太多表名。单条 SQL 语句最多可以引用 255 个表。此限制包括所引用的任何视图中的每个表。

无法处理该语句。

用户响应

将 SQL 语句分为两个或多个带有 255 个或更少表引用的简单语句。

此消息适用于通过 DB2 Connect 访问的主机。

sqlcode:-129

sqlstate:54004

SQL0130N ESCAPE 子句不是单个字符,或者模式字符串中转义字符的出现是无效的。

说明

转义字符必须是单个字符,长度不超过 2 字节。仅当它之后跟随其自身、百分号或下划线时,它才能出现在模式字符串中。有关 LIKE 谓词上 ESCAPE 子句的更多信息,请参阅 SQL Reference

用户响应

相应地更正模式字符串或者转义字符。

sqlcode:-130

sqlstate:22019, 22025

SQL0131N LIKE 谓词的操作数有不兼容的数据类型。

说明

如果 LIKE 或 NOT LIKE 左边的表达式是字符类型,那么右边的表达式必须是字符类型。

如果左边的表达式是图形类型,那么右边的表达式必须是图形类型。

如果左边的表达式是二进制字符串类型,那么右边的表达式必须是二进制字符串类型。

无法处理该语句。

用户响应

将 LIKE 谓词的表达式更正为相同的数据类型。

sqlcode:-131

sqlstate:42818

SQL0132N 未处理语句,因为在 LIKE 谓词或标量函数需要字符串表达式的情况下对其指定了值。

说明

对函数(例如,下列其中一个函数)指定了无效字符串表达式,会返回此消息:

  • LIKE 谓词
  • LOCATE 标量函数
  • POSITION 标量函数
  • POSSTR 标量函数
  • STRPOS 标量函数

用户响应

在对每个函数指定有效操作数的情况下,再次发出语句。

sqlcode:-132

sqlstate:42824

SQL0134N 不正确地使用字符串列、主变量、常量或函数 名称

说明

不允许使用字符串 名称

下列各项中不允许生成 CLOB、DBCLOB、BLOB、LONG VARCHAR 或 LONG VARGRAPHIC 数据类型的表达式:
  • SELECT DISTINCT 语句
  • GROUP BY 子句
  • ORDER BY 子句
  • 带有 DISTINCT 的列函数
  • 除 UNION ALL 之外的集合运算符的 SELECT 或 VALUES 语句。

联合系统用户:在传递会话中,特定于数据源的限制可能会导致此错误。请参阅 SQL Reference 文档,找到失败的数据源。

无法处理该语句。

用户响应

不支持所请求的对字符串的操作。

sqlcode:-134

sqlstate:42907

SQL0135N INSERT 语句或 UPDATE 语句中长串列的输入必须来自主变量,或是关键字 NULL。

说明

UPDATE 或 INSERT 正在使用常量、列名或子查询(但本来应该使用 NULL 或主变量)。

长串列是 LONG VARCHAR、LONG VARGRAPHIC 或 VARCHAR(n),其中 n 大于 254 但小于或等于 32767,或是 VARGRAPHIC(n),其中 n 大于 127,但小于或等于 16383。

用户响应

请参阅 DB2 for VM Application Programming 手册以了解有关使用长串的信息。更正该语句。再次尝试。

sqlcode:-135

sqlstate:56033

SQL0137N 操作 中所得到的长度大于 最大值

说明

此操作生成的结果字符串的实际长度超过此操作的最大允许长度。

如果此操作为 CONCAT,那么并置给定操作数的结果比结果类型支持的长度长。

字符串结果限制在 32,700 字节以内(除非操作数之一是 CLOB,其限制为 2 千兆字节)。

图形字符串结果限制在 16350 个字符以内,除非操作数之一是 DBCLOB,这种情况下的限制为 1,073,741,823(少于 1 千兆字节)个双字节字符。

二进制字符串结果(操作数是 BLOB)限制为 2 千兆字节。

用户响应

请参阅此操作的文档以确定结果字符串的生成方式以及操作的最大长度的确定方式。考虑更改此操作的参数是更改结果的长度还是最大长度。

如果此操作为 CONCAT,请确保这些操作数的长度之和未超过受支持最大长度并重试此操作。

sqlcode:-137

sqlstate:22001, 54006

SQL0138N 未执行此语句,因为标量函数的数字自变量超出范围。

说明

如果对用于处理一个或多个字符串的标量函数指定了超出范围的数字自变量,那么会返回此消息。这类函数的示例包括:

  • SUBSTR
  • SUBSTRING
  • LEFT
  • RIGHT
  • INSERT
  • OVERLAY

例如,SUBSTR 函数的第二个自变量指定字符串中的位置。如果对该自变量指定的值小于 1 或大于字符串长度,那么会返回此消息。有关特定函数的自变量的有效范围的信息,请参阅该函数的描述。

用户响应

查看该语句中每个标量函数的数字自变量。更正超出范围的所有值,然后重新发出该语句。

sqlcode:-138

sqlstate:22011

SQL0139W 的规范中出现冗余子句。

说明

列规范中的子句是冗余的。

语句处理成功,但是忽略了冗余的子句。

用户响应

更正列规范。

sqlcode:+139

sqlstate:01589

SQL0142N 不支持 SQL 语句。

说明

在其他 SQL 方言中有效的过程化 SQL 语句不受此数据服务器支持,或者对其他 IBM 关系数据库有效的 SQL 语句不受此数据服务器支持。

联合系统用户:检查是否已将 SQL 语句定向至不支持该 SQL 语句的数据源。

无法处理该语句。

用户响应

更改该 SQL 语句的语法,或从程序中除去该语句。

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

SQL0143W 不支持 SQL 语句; 忽略无效的语法。

说明

对于其他 IBM 关系数据库产品可能有效的嵌入式 SQL 语句,可被数据库管理器了解,但却不受支持。

该语句可能产生了不一致或不需要的结果。

用户响应

更改该 SQL 语句的语法,或从程序中除去该语句。

SQL0150N INSERT、DELETE、UPDATE、MERGE 或 TRUNCATE 语句中的目标全查询、视图、类型表、具体化查询表、范围集群表或者登台表是不允许对其执行所请求的操作的目标。

说明

已定义 INSERT、UPDATE、DELETE、MERGE 或 TRUNCATE 语句中所指定的全查询、视图、类型表、具体化查询表、范围集群表或登台表,因此不能执行所请求的插入、更新、删除或截断操作。

如果视图或全查询的 SELECT 语句包含下列任一项,那么视图或全查询为只读的:

  • DISTINCT 关键字
  • SELECT 列表中的列函数
  • GROUP BY 或 HAVING 子句
  • 标识下列其中一项的 FROM 子句:
    • 多个表或视图
    • 只读视图( SYSCAT.VIEWS 的 READONLY 列设置成“Y”)
    • 后面紧跟着时间段规范的系统时间段时间表
  • 集合运算符(除 UNION ALL 外)。
  • 联合系统用户:导致视图不能更新的特定于数据源的限制

注意,这些条件不适用于 SELECT 语句或全查询的子查询。

直接或间接包含引用子查询或使用 NOT DETERMISTIC 或 EXTERNAL ACTION 定义的例程的 WHERE 子句的视图不能用作 MERGE 语句的目标。

使用 WITH ROW MOVEMENT 子句定义的视图不能用作包含更新操作的 MERGE 语句的目标。

通过使用 UNION ALL 的全查询定义的视图不能用作指定修改操作中的 period 子句的 MERGE 语句的目标。

无法直接将行插入到对不可实例化的结构化类型定义的类型表中。此表的子表可能允许插入。

通常,系统维护的具体化查询表和登台表不允许插入、更新、删除或截断操作。

不能在截断操作中使用范围集群表。

无法处理该语句。

用户响应

不能对全查询、视图、系统维护的具体化查询表、范围集群表或登台表执行所请求的功能。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和更新限制。

sqlcode:-150

sqlstate:42807

SQL0151N 不能更新列 名称

说明

指定的列不能更新,因为尝试了下列其中一项:

  • 对象表是一个视图,并且指定的列是从视图的标量函数、表达式、关键字、常量或列中派生出来的,而在此视图中不能更新该列。
  • 所指定的列是系统目录的不可更新列,或者是显式标记为 READ ONLY 的列。
  • 表中的 BUSINESS_TIME 时间段包括所指定的要更新的列。不能在触发器主体中修改 BUSINESS_TIME 时间段的列。
  • 表中的 BUSINESS_TIME 时间段包括所指定的要更新的列。如果数据更改语句包括 period 子句,那么不能修改 BUSINESS_TIME 时间段的列。

联合系统用户应检查是否有其他某个特定于数据源的限制阻止更新该列。

无法处理该语句。

用户响应

如果指定的列是从标量函数、表达式、关键字或不可更新的列中派生出来的,那么省略更新的设置子句中的列或者插入的列。要获取可更新目录(和可更新列)的列表,请参阅 SQL Reference。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和更新限制。

sqlcode:-151

sqlstate:42808

SQL0152N 约束 约束名实际约束类型 约束而不是 期望约束类型 约束。

说明

尝试改变或删除约束 约束名,但是它定义为 期望约束类型 约束,而不是指定的 实际约束类型 约束。

用户响应

验证要改变或删除的约束的名称和类型。

sqlcode:-152

sqlstate:42809

SQL0153N 语句不包括必需的列表。

说明

当发生下列情况时,必须在 CREATE VIEW 语句、公共表表达式或在包含作为子查询子句的 CREATE TABLE 语句中指定列列表:
  • 全查询中的 SELECT 列表的任一元素都不是列名称并且都未使用 AS 子句命名。
  • 任两个元素是相同的列名称,未使用 AS 子句重命名。

无法处理该语句。

用户响应

在 CREATE VIEW 语句、公共表表达式和 CREATE TABLE 语句中提供列名称列表,或使用 AS 子句在全查询的 SELECT 列表中命名列。

sqlcode:-153

sqlstate:42908

SQL0155N 不能修改触发器转换表。

说明

触发器包括带有标识的 OLD_TABLE 或 NEW_TABLE 的 REFERENCING 子句。DELETE、INSERT 或 UPDATE 触发的 SQL 语句使用了指定为 OLD_TABLE 或 NEW_TABLE 的名称作为要修改的表。 

用户响应

从触发操作中除去 DELETE、INSERT 或 UPDATE 触发 SQL 语句,或者更改转换表的名称,以便使该名称不与您正尝试修改的表冲突。

sqlcode:-155

sqlstate:42807

SQL0156N 此操作所使用的名称不是表。

说明

ALTER TABLE、DROP TABLE、SET INTEGRITY、CREATE TRIGGER、CREATE INDEX、LOCK TABLE 和 RENAME TABLE 这些 SQL 语句只适用于表,而不适用于视图。RUNSTATS、LOAD 和 REDISTRIBUTE DATABASE PARTITION GROUP 实用程序也只适用于表,而不适用于视图。

联合系统用户:在联合环境中,不支持某些实用程序和语句。请参阅《管理指南》以了解更多信息。

无法处理该语句或实用程序。

用户响应

验证在语句中指定了正确的表名称。如果提供了别名,那么确保可将该别名解析为一个表。

联合系统用户:验证该对象是否不是昵称。

sqlcode:-156

sqlstate:42809

SQL0157N 在 FOREIGN KEY 子句中不允许 名称,因为它不标识基本表。

说明

在 CREATE 或 ALTER TABLE 语句的 FOREIGN KEY 子句中标识了对象 名称。FOREIGN KEY 子句必须标识基本表。

无法处理该语句。未创建或改变指定的表。

用户响应

更正语句以在 FOREIGN KEY 子句中指定基本表名。

如果提供了别名,那么确保该别名可解析为一个基本表。

sqlcode:-157

sqlstate:42810

SQL0158N 名称 指定的列数与结果表中的列数不相同。

说明

标识 名称 可标识:
  • 在 CREATE VIEW 语句中指定的视图
  • 公共表表达式的表名
  • 嵌套表表达式的相关名
  • 在 CREATE TABLE 或 ALTER TABLE 语句中指定的具体化查询表
  • 在 CREATE FUNCTION 语句中指定的函数
  • 在 CREATE METHOD 语句中指定的方法。
  • CREATE STAGING TABLE 语句中的登台表名

指定的列名数必须等于相关联的全查询的结果表中的列数。如果 名称 是登台表并且相关的具体化查询表有 group by 子句,指定的列名数目必须比为其定义登台表的具体化查询表中的列数目多 2。如果相关的具体化查询表没有 group by 子句,指定的列名称数目必须比具体化查询表中的列数目多 3。

无法处理该语句。

用户响应

更正语法,以使对 名称 定义的列名列表为结果表中的每一列指定一个名称。

sqlcode:-158

sqlstate:42811

SQL0159N 语句引用了标识非预期对象类型的对象。对象:对象。对象类型:对象类型。期望的对象类型:期望的对象类型

说明

作为语句或命令的一部分指定的对象 对象 指的是类型为 对象类型 的对象,而不是期望的类型为 期望的对象类型 的对象。

在语句或命令中指定的对象类型必须与由 期望的对象类型 标识的类型相匹配。例如:

  • 如果语句是 DROP ALIAS PBIRD.T1,那么 PBIRD.T1 必须是别名。
  • 如果 对象类型 是 TABLE,那么指定的表类型可能不受语句支持。
  • CREATE MASK 或 CREATE PERMISSION 语句必须指定当前服务器中存在的基本表。

用户响应

更改该语句或命令,使之指定期望的对象类型的对象。

sqlcode:-159

sqlstate:42809

SQL0160N WITH CHECK OPTION 子句对指定的视图无效。

说明

如果下列各项为真,那么 WITH CHECK OPTION 子句不能在视图定义中使用:

  • 视图定义为只读。如果 SELECT 语句包含下列任一项,那么视图是只读的。(注意:这些条件不适用于 SELECT 语句的子查询。)
    • DISTINCT 关键字
    • 所选列表中的列函数
    • GROUP BY 或 HAVING 子句
    • 标识以下任一项的 FROM 子句:
      • 多个表或视图
      • 只读视图
    • 集合运算符(除 UNION ALL 之外)。
  • CREATE VIEW 语句中的 SELECT 语句包括子查询(某些目录表的特定统计信息列除外)。
  • 指定的视图定义依赖于的视图定义了 INSTEAD OF 触发器。
  • 指定的视图定义依赖于的视图包含文本搜索功能。

联合系统用户:在引用可更新昵称的视图上不支持 WITH CHECK 选项。

无法处理该语句。未创建指定的视图。

用户响应

除去 WITH CHECK OPTION 子句,或更改视图定义,以使其符合此消息中列示的规则。

sqlcode:-160

sqlstate:42813

SQL0161N 插入或更新操作的结果行不符合视图定义。

说明

在作为插入或更新操作的对象的视图定义中指定了 WITH CHECK OPTION 子句,或者 FROM 子句指定了将视图作为目标的插入或更新操作。因此,检查在该视图中插入或更新行的所有尝试,以确保其结果符合视图定义。

如果 FROM 子句中包含以视图作为目标的插入或更新操作,那么始终将当作视图已经定义了 WITH CHECK OPTION 一样来处理插入或更新操作。

无法处理该语句。未执行任何插入或更新,且视图及其基本表的内容保持不变。

用户响应

检查视图定义,确定请求的插入或更新操作被拒绝的原因。注意:这可能是一个与数据有关的条件。

所请求的插入或更新操作可能正在尝试将超出范围的值放入目标列中。

联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和视图定义。

sqlcode:-161

sqlstate:44000

SQL0170N 函数 名称 的自变量数不正确。

说明

指定的标量函数 名称 带有太少或太多的自变量。

无法处理该语句。

用户响应

确保对标量函数指定了正确数目的自变量。

sqlcode:-170

sqlstate:42605

SQL0171N 未处理该语句,因为例程 例程名 的位置 n 中的参数的自变量的数据类型、长度或值不正确。参数名:参数名

说明

有两种情况可能会返回此消息:

  • 例程参数的自变量的数据类型、长度或值不正确。
  • 指定了有冲突或不受支持的参数组合。

如果位置不适用或未知,那么对于 n 将返回值 0。如果参数名不适用或未知,那么对于 参数名 将返回空字符串。

用户响应

通过查看例程参数的规则来确定标记中的参数 参数名 的错误之处:

  • 必需的和受支持的参数
  • 参数自变量的有效范围
  • 参数的有效组合

再次调用该例程并指定有效参数。

sqlcode:-171

sqlstate:5UA0J、5UA05、5UA06、5UA07、5UA08、5UA09、2201G、2201T、2201V、10608、22003、22014、22016、22546 和 42815

SQL0172N 名称 是无效的函数名。

说明

SQL 语句包括了一个未知的标量函数。

无法处理该语句。

用户响应

确保函数名称的拼写正确。

sqlcode:-172

sqlstate:42601

SQL0176N TRANSLATE 标量函数的第二个、第三个或第四个自变量不正确。

说明

该语句由于下面一个或多个原因而不正确:
  • 转换标量函数不允许由一个使用不同字节数编码的字符来替换另一个字符。例如,单字节字符不能用双字节字符替换,双字节字符也不能用单字节字符替换。
  • 转换标量函数的第二个和第三个自变量必须以正确格式的字符结束。
  • 如果第一个自变量是 CHAR 或 VARCHAR,那么转换标量函数的第四个自变量必须是一个正确格式的单字节字符。
  • 如果第一个自变量是 GRAPHIC 或 VARGRAPHIC,那么转换标量函数的第四个变量必须是一个正确格式的双字节字符。

无法处理该语句。

用户响应

确保转换标量函数的第二个、第三个和第四个自变量有正确的值。

sqlcode:-176

sqlstate:42815

SQL0180N 日期时间值的字符串表示法的语法不正确。

说明

日期、时间或时间戳记值的字符串表示法不符合指定的或隐含的数据类型语法。

无法处理该语句。

用户响应

确保日期、时间或时间戳记值的语法符合其数据类型语法。如果不打算将该字符串用作日期、时间或时间戳记值,那么确保在使用该字符串时,它并未暗指该数据类型。

联合系统用户:该问题可能是由数据源上的日期/时间表示问题所引起的。如果原因未知,请找出使请求失败的数据源中的问题,并检查该数据源的日期/时间表示限制。

sqlcode:-180

sqlstate:22007

SQL0181N 日期时间值的字符串表示法超出范围。

说明

日期、时间或时间戳记值的字符串表示法包含超出范围的值。

此错误可能由从使用其日期时间格式与创建它的应用程序使用的日期时间格式不同的地域代码的应用程序访问日期时间值导致的。例如,当读取字符串日期时间值的应用程序期望该值的格式为 mm/dd/yyyy 时,以格式 dd/mm/yyyy 存储的字符串日期时间值将是无效的。

日期、时间或时间戳记值的正确范围如下所示:

  • 年份为 0001 到 9999。
  • 月份为 1 到 12。
  • 当月份为 1、3、5、7、8、10 和 12 时,日为 1 到 31。
  • 当月份为 4、6、9、11 时,日为 1 到 30。
  • 非闰年的月份为 2 时,日为 1 到 28。
  • 闰年的月份为 2 时,日为 1 到 29。
  • 小时为 0 到 24。如果小时为 24,那么时间的其他部分为 0。如果为 USA 格式,小时不能大于 12。
  • 分钟为 0 到 59。
  • 秒为 0 到 59。
  • 秒的小数部分为 0 到 999999999999。
  • 不是闰年时,儒略历日期的天部分为 001 至 365。
  • 是闰年时,儒略历日期的天部分为 001 至 366。

联合系统用户:该问题可能是由数据源上的日期/时间表示问题所引起的。 请参阅该数据源的文档,以获取该数据源的日期和时间值范围。如果原因未知,请找出使请求失败的数据源中的问题,并检查该数据源的日期/时间表示限制。

无法处理该语句。

用户响应

确保值在有效范围中,且应用程序与字符串值的日期时间格式相同。

sqlcode:-181

sqlstate:22007

SQL0182N 带有日期时间值或作了标记的持续时间的表达式无效。

说明

指定的表达式包含未正确使用的日期、时间或时间戳记值或作了标记的持续时间。

无法处理该语句。

用户响应

检查 SQL 语句,确定问题的原因并更正该语句。

sqlcode:-182

sqlstate:42816

SQL0183N 日期时间算术运算或日期时间标量函数的结果不在有效的日期范围内。

说明

算术运算的结果为范围 0001-01-01 到 9999-12-31 之外的日期或时间戳记持续时间。

无法执行该语句。

用户响应

检查 SQL 语句以确定问题的原因。如果问题与数据有关,那么检查当错误发生时所处理的数据。

sqlcode:-183

sqlstate:22008

SQL0187N 对当前日期/时间专用寄存器的引用无效。

说明

当检索日期/时间信息时,检测到操作系统指示的错误。

用户响应

确保系统 TOD 时钟及时区设置正确。

sqlcode:-187

sqlstate:22506

SQL0190N ALTER TABLE 表名 为列 列名 指定的属性与现有列不兼容。

说明

在 ALTER COLUMN 子句中对 ALTER TABLE 语句中表 表名 的列 列名 指定的属性与现有列的属性不兼容。由于下列原因之一而返回了错误。

  • 如果为现有列指定了 SET DATA TYPE 子句,但是存在下列情况:
    • 该数据类型不是可以改变的数据类型
    • 对现有数据或缺省值的数据类型进行转换将导致溢出、不允许产生的截断或者强制类型转换错误
    • 无法将该数据类型更改为新数据类型
    • 当前数据类型是 SYSPROC.DB2SECURITYLABEL,无法更改此数据类型
    • 无法将数据类型改变为 SYSPROC.DB2SECURITYLABEL
  • 如果指定了 SET EXPRESSION 子句,但是现有列存在下列情况:
    • 不是定义为使用表达式生成。
    • 是表分区键的一部分。
  • 如果指定了 DROP COLUMN SECURITY 选项,但是该列尚不受安全标号保护。
  • 如果指定了 DROP DEFAULT,但是未使用缺省属性定义该列。
  • 如果指定了 DROP IDENTITY,但是未将该列定义为标识列。
  • 如果指定了 DROP EXPRESSION,但是未使用生成表达式来定义该列。
  • 如果指定了 SET DEFAULT,但是已使用另一种生成格式(标识或表达式)定义该列,并且在同一语句中没有相应的 DROP。
  • 如果指定了 SET GENERATED ALWAYS AS(表达式),但是已使用生成格式(缺省、标识或表达式)定义该列,并且在同一语句中没有相应的 DROP。
  • 如果指定了 SET GENERATED ALWAYS AS IDENTITY 或者 SET GENERATED BY DEFAULT AS IDENTITY,但是已使用生成格式(缺省、标识或表达式)定义该列,并且在同一语句中没有相应的 DROP。
  • 如果指定了 SET GENERATED ALWAYS 或者 SET GENERATED BY DEFAULT,但是该列不是标识列。
  • 如果指定了附带 SET GENERATED 的 ALTER COLUMN 来将该列更改为“行开始”列、“行结束”列或“事务开始标识”列,但是先前已经将该列定义为生成列。
  • 如果指定了 ALTER COLUMN 来将该列更改为“行开始”列、“行结束”列或“事务开始标识”列,但是已经为该列定义了由用户指定的缺省值。
  • 如果指定了 ALTER COLUMN SET DATA TYPE,但是 BUSINESS_TIME 时间段的开始列或结束列的精度降低了。不能降低精度。
  • 如果指定了 ALTER COLUMN SET DEFAULT,但是该列是生成列。
  • 如果指定了 DROP DEFAULT,但是该列是“行开始”列、“行结束”列或“事务开始标识”列。
  • 如果指定了 DROP GENERATED,但是该列不是生成列。
  • 如果指定了 DROP NOT NULL,但是在该表的主键中指定了该列,或者该列是标识列、“行更改时间戳记”列、“行开始”列、“行结束”列或随机分发键列。
  • 如果指定了 SET NOT NULL,那么该列是随机分发键列

无法处理该语句。

用户响应

使指定的属性与现有列相兼容,移除属性规范,或者指定另一个列名。如果指定了 SET DATA TYPE 子句,请检查通知日志,以找出可能发生了条目列示冲突的行,这些行可能已经不允许执行 ALTER COLUMN。如果对已经具有用户指定的缺省值的列指定了 ALTER COLUMN,那么必须在发出 ALTER TABLE 语句删除此缺省值之后,才能更改列定义。

sqlcode:-190

sqlstate:42837

SQL0191N 因为分段 MBCS 字符而出错。

说明

原因可能是:

  1. 用户数据包含格式不正确的多字节字符。例如,找到 DBCS 字符的第一个字节,但却找不到第二个字节。
  2. 标量函数(如 SUBSTR 或 POSSTR)不正确地截断了多字节字符串。对于这些函数,在数据库代码页的上下文中,起始值和长度值(以字节数计)必须正确。对于Unicode 数据库,此问题的常见原因是 UTF-8 字符串的起始值和长度值不正确。
  3. 标量函数(如 TRANSLATE)可能已更改多字节字符串。

联合系统用户:数据源也可能会检测到此情况。

用户响应

  1. 更正输入数据,然后再次尝试。
  2. 更改起始值和长度值,以便在将字符转换至数据库代码页时,不会错误截断多字节字符。
  3. 更正出错的 TRANSLATE。

联合系统用户:如果数据正确,那么找出导致请求失败的数据源中的问题,并检查该数据源的 DBCS 限制。如果数据看起来正确,请与 IBM 服务中心联系以获取辅助。

sqlcode:-191

sqlstate:22504

SQL0193N 在 ALTER TABLE 语句中,已将列 列名 指定为 NOT NULL,而 DEFAULT 子句或者未指定,或者被指定为 DEFAULT NULL。

说明

当对已存在的表添加新列时,必须为所有现有的行给此新列赋值。缺省情况下,指定空值。但是,因为该列定义为 NOT NULL,所以必须定义除空之外的缺省值。

用户响应

除去对列的 NOT NULL 限制或为列提供除空之外的缺省值。

sqlcode:-193

sqlstate:42601

SQL0195N 不能删除 表名 的最后一列。

说明

尝试使用 ALTER TABLE 语句来删除一列或多列。不能从表 表名 中删除列,因为改变表时必须至少保留现有的其中一列。

用户响应

一旦完成了 ALTER 语句,确保表 表名 中至少有一列。除去其中一列的 DROP 并再次尝试发出该请求;或者,如果应该除去所有列,那么删除然后再次创建该表。

sqlcode:-195

sqlstate:42814

SQL0196N 不能删除 表名 中的第 列名 列。原因码:原因码

说明

尝试删除列 列名。请参阅原因码以获取有关无法删除该列的说明。

1

无法删除该列,因为它是多节点分布键、表分区键或 MDC 组织维的一部分。

2

无法删除该列,因为系统生成的列依赖于该列。

3

不能删除 SYSPROC.DB2SECURITYLABEL 类型的列。

4

无法删除该列,因为在时间段的定义中引用了该列。

5

无法删除该列,因为它是系统时间段时间表中的一列。

6

无法删除该列,因为它是历史记录表中的列。

用户响应

1

在更改表的键或维之前,无法删除该列。

2

更改从属列的生成表达式。

3

删除并重新创建该表,而不创建 SYSPROC.DB2SECURITYLABEL 类型的列

4

更改用于请求删除该列的语句。

5

从系统时间段时间表中删除某列时,要求也要从相关联的历史记录表中删除此列。可以按照下列步骤从这两个表中删除某列。

  1. 改变系统时间段时间表以删除版本控制。这将断开这两个表之间的链接。
  2. 改变系统时间段时间表以删除此列。
  3. 改变作为历史记录表的表以删除此列。
  4. 改变前一系统时间段时间表以添加版本控制。这将重新建立这两个表之间的链接。
6

从历史记录表中删除某列时,要求也要从相关联的系统时间段时间表中删除此列。可以按照下列步骤从这两个表中删除某列。

  1. 改变系统时间段时间表以删除版本控制。这将断开这两个表之间的链接。
  2. 改变系统时间段时间表以删除此列。
  3. 改变作为历史记录表的表以删除此列。
  4. 改变前一系统时间段时间表以添加版本控制。这将重新建立这两个表之间的链接。

sqlcode:-196

sqlstate:42817

SQL0197N 限定的列名在 ORDER BY 子句中是不允许的。

说明

包括集合运算符(UNION、EXCEPT、INTERSECT)的全查询的 ORDER BY 子句不能有限定的列名。

用户响应

确保 ORDER BY 子句中所有的列名为非限定的。

sqlcode:-197

sqlstate:42877

SQL0198N PREPARE 或 EXECUTE IMMEDIATE 语句的语句字符串为空白或空。

说明

作为 PREPARE 或 EXECUTE IMMEDIATE 语句的对象的主变量包含的全为空白,或为空字符串。

未能完成 PREPARE 或 EXECUTE IMMEDIATE。

用户响应

更正程序的逻辑以确保在 PREPARE 或 EXECUTE IMMEDIATE 语句执行以前,在它的操作数中提供了有效的 SQL 语句。

sqlcode:-198

sqlstate:42617

SQL0199N 文本 之后使用保留字 关键字 是无效的。预期标记可能包括:标记列表

说明

当保留字 关键字 出现在 文本 之后时,在语句中该点上检测到 SQL 语句中的语法错误。文本 字段指示该保留字前面的 SQL 语句的 20 个字符。语句中的子句的顺序可能是错误的。

作为对程序员的帮助,在 SQLCA 的 SQLERRM 字段中,提供了有效标记的部分列表作为 标记列表。此列表假定语句直到该位置为止均正确。

无法处理该语句。

用户响应

检查在关键字区域内的语句。如果丢失,添加一个冒号或 SQL 定界符。验证这些子句是否顺序正确。如果消息中标识的保留字列示为保留字,那么使该字成为定界标识。

注意:此错误仅适用于版本 2 之前的 DB2 发行版。

sqlcode:-199

sqlstate:42601

SQL0203N 对列 名称 的引用是有歧义的。

说明

在语句中使用了列 名称,并且该语句可能可引用多个列。这可能是如下操作的结果:
  • 在 FROM 子句中指定的两个表有同名的列
  • ORDER BY 子句引用适用于选择列表中的多列的名称
  • 对于 CREATE TRIGGER 语句中主题表的列的引用不使用相关名称来指示它是否引用旧或新的转换变量。

该列名需要进一步的信息来建立它是可能的表列中的哪个列。

无法处理该语句。

用户响应

对列名添加一个限定符。限定符是表名或相关名。可能需要在选择列表中重命名列。

sqlcode:-203

sqlstate:42702

SQL0204N 名称 是一个未定义的名称。

说明

此错误由以下之一引起:

  • 未在数据库中定义由 名称 标识的对象。
  • 名称 所标识的对象是在模块中定义的,它不是已发布的模块对象,但在模块外部被引用。
  • 在表上未定义由 名称 标识的数据分区。
  • 正在使用某个数据类型。此错误可能是由于下列原因而导致的:
    • 如果 名称 是限定名称,那么表明具有此名称的数据类型在与限定符匹配的模式中不存在,或者在与根据用户的 SQL 路径首先找到的限定符匹配的模块中不存在。
    • 如果 名称 是非限定名称,那么表明用户的路径未包含期望的数据类型所属的模式,或者在该模块中未定义该数据类型(如果该引用从模块例程中进行)。
    • 该数据类型在创建时间戳记早于程序包绑定时间的数据库中不存在(适用于静态语句)。
    • 如果数据类型在 CREATE TYPE 语句的 UNDER 子句中,那么该类型名可能与正定义的类型相同,这是无效的。
  • 下列其中一项中正在引用某个函数:
    • DROP FUNCTION 语句
    • COMMENT ON FUNCTION 语句
    • CREATE FUNCTION 语句的 SOURCE 子句

      如果 名称 是限定名称,那么函数不存在。如果 名称 是非限定名称,那么当前路径的任何模式中都不存在此名称的函数。

      请注意,函数不能以 COALESCE、DBPARTITIONNUM、GREATEST、 HASHEDVALUE、LEAST、MAX (scalar)、 MIN (scalar)、NULLIF、RID、NVL、RAISE_ERROR、 TYPE_ID、TYPE_NAME、TYPE_SCHEMA 或 VALUE 内置 函数作为源函数。

  • 在 CREATE SECURITY LABEL COMPONENT 语句中 UNDER 子句右边使用了名为 名称 的元素,但尚未将该元素定义为 ROOT 或者在其他某个元素下方(UNDER)。
  • 尚未定义名为 名称 的安全标号组件元素。
  • 下列其中一个标量函数指定了由 名称 标识的安全策略,但在数据库中未定义该安全策略。
    • SECLABEL
    • SECLABEL_TO_CHAR
    • SECLABEL_BY_NAME

可为任何类型的数据库对象生成此返回码。

联合系统用户:在数据库中未定义由 名称 标识的对象,或者 名称 不是 DROP NICKNAME 语句中的昵称。

某些数据源未向 名称 提供适当的值。在这些情况下,消息标记将具有以下格式:“OBJECT:<数据源> TABLE/VIEW”,表明所指定数据源的实际值未知。

无法处理该语句。

用户响应

确保在 SQL 语句中正确指定了对象名(包括任何必需的限定符),并且它存在。如果该名称表示一个数据分区,那么查询目录表 SYSCAT.DATAPARTITIONS 以找到一个表的所有数据分区。对于 SOURCE 子句中缺少的数据类型或函数,可能是该对象不存在,或该对象处于某模式中,但该模式不在您的路径中。

对于 CREATE 或 ALTER SECURITY LABEL COMPONENT 语句,应确保安全标号组件中存在指定为用于定位新元素值所在位置的引用元素值的每个元素。

对于 CREATE SECURITY LABEL COMPONENT 语句而言,确保先将每个元素指定为 ROOT 或者 UNDER 子句中的子代,然后再在 UNDER 子句中将其指定为父代元素。

对于标量函数 SECLABEL、SECLABEL_TO_CHAR 或 SECLABEL_BY_NAME 而言,确保对自变量“安全策略名”指定了有效的安全策略。

联合系统用户:如果该语句是 DROP NICKNAME,那么确保该对象实际上是一个昵称。该对象可能不存在于联合数据库中或数据源上。验证任何联合数据库对象和任何数据源对象的存在情况。

sqlcode:-204

sqlstate:42704

SQL0205N 对象名 中未定义列、属性或时间段 名称

说明

如果 对象名 是表或视图,那么 名称 是未在 对象名 中定义的列或时间段。如果 对象名 是结构化类型,那么 名称 是未在 对象名 中定义的属性。

联合系统用户:对象名 可以是指昵称。

无法处理该语句。

用户响应

如果 对象名 是表或视图,那么验证是否在 SQL 语句中正确指定了列名、时间段名称、表名或视图名(包括任何必需的限定符)。如果 对象名 是结构化类型,那么验证是否在 SQL 语句中正确指定了属性名和类型名(包括任何必需的限定符)。

此外,如果在 REORG 或 IMPORT 期间接收到此错误,那么索引中的列名可能违反了在 SQL Reference 中定义的数据库管理器命名规则。

sqlcode:-205

sqlstate:42703

SQL0206N 名称 在使用它的上下文中无效。

说明

此错误在下列情况中可能发生:

  • 对于 INSERT 或 UPDATEF 语句,指定的列不是表的列或指定作为插入或更新对象的视图的列。
  • 对于 SELECT 或 DELETE 语句,指定的列不是语句中 FROM 子句所标识的任何表或视图的列。
  • 对于赋值语句,引用名称未解析为列或变量的名称。
  • 在引用行类型变量中的字段时,引用名称未解析为该行类型中任何字段的名称。
  • 对于 ORDER BY 子句,指定的列是子查询中的相关列引用,而这是不允许的。
  • 对于参数化游标构造函数中的 SELECT 语句,对 名称 的引用未与某个列或作用域内变量匹配。在参数化游标的作用域内,不会考虑局部变量和例程 SQL 参数。
  • 对于独立的复合 SQL(编译型)语句:
    • 引用 名称 未解析为某个列或作用域内局部变量的名称。
    • 尚未声明在 SIGNAL 语句中指定的条件名 名称
    • 在引用行类型变量中的字段时,引用名称未解析为该行类型中任何字段的名称。
  • 对于 CREATE TRIGGER、CREATE METHOD、CREATE FUNCTION 或 CREATE PROCEDURE 语句:
    • 引用 名称 未解析为列名、局部变量名或转换变量名。
    • 引用 名称 解析为在当前作用域内不可用的局部变量的名称。
    • 尚未声明在 SIGNAL 语句中指定的条件名 名称
    • 在引用行类型变量中的字段时,引用名称未解析为该行类型中任何字段的名称。
  • 对于 CREATE TRIGGER 语句:
    • 引用主题表列而未使用 OLD 或 NEW 相关名。
    • 触发的操作中 SET 转换变量语句的赋值符号左边指定旧转换变量,而此处仅支持新转换变量。
  • 对于带有 PREDICATES 子句的 CREATE FUNCTION 语句:
    • SQL 函数的 RETURN 语句引用不是参数的变量或者 RETURN 语句范围内的其他变量。
    • FILTER USING 子句引用不是参数名或 WHEN 子句中的表达式名的变量。
    • 在索引使用规则中的搜索目标与正在创建的函数的某些参数名不匹配。
    • 在索引使用规则中的搜索自变量与 EXPRESSION AS 子句中的表达式名或者正在创建的函数的参数名不匹配。
  • 对于 CREATE INDEX EXTENSION 语句,RANGE THROUGH 子句或 FILTER USING 子句引用不是在该子句中可以使用的参数名的变量。
  • 对于参数化游标变量引用,参数化游标变量定义中使用的 SELECT 语句中引用的局部 SQL 变量或 SQL 参数在当前作用域内不可用。
  • 对于时间段引用,所指定的时间段不在此语句的任何源表或源视图(或者目标表或目标视图)中。

无法处理该语句。

用户响应

验证是否在 SQL 语句中正确指定了名称。对于 SELECT 语句,确保在 FROM 子句中命名了所有必需的表。对于 ORDER BY 子句中的子查询,确保无相关列引用。如果对表使用相关名,那么验证后续引用使用的是相关名,而不是表名。

对于 CREATE TRIGGER 语句,确保在 SET 转换变量语句赋值符号左边仅指定了新的转换变量,并且对主题表列的任何引用都有指定的相关名称。

对于独立的复合 SQL 语句、CREATE FUNCTION、CREATE PROCEDURE 或 CREATE TRIGGER 语句,验证那些列或变量在当前复合 SQL 语句的作用域内是否可用。

对于使用 db2-fn:sqlquery 函数嵌入在 XQuery 中的全查询,该全查询中的引用必须是下列其中一项:该全查询上下文中的列、全局变量或使用 db2-fn:sqlquery 函数的其他自变量传递给新的 SQL 上下文的参数。

sqlcode:-206

sqlstate:42703

SQL0207N 列名在与集合运算符配合使用的 SELECT 语句的 ORDER BY 子句中是不允许的。

说明

带有集合运算符的 SELECT 语句包含 ORDER BY 子句,它指定列名。在此情况下,ORDER BY 子句中的列的列表必须仅包含整数。

无法处理该语句。

用户响应

在 ORDER BY 子句中的列的列表中仅指定整数。

注意:此错误仅适用于版本 2 之前的 DB2 发行版,以及通过 DB2 Connect 访问的主机。

sqlcode:-207

sqlstate:42706

SQL0208N 因为列 名称 不是结果表的一部分,所以 ORDER BY 子句无效。

说明

因为在 SELECT 列表中未指定在 ORDER BY 列表中指定的列 名称 并且该列不在结果表中,所以语句无效。当 SELECT 语句的全查询不是子查询时,仅结果表中的列可用于排序该结果。

无法处理该语句。

用户响应

要更正语句语法,向结果表中添加指定列,或者从 ORDER BY 子句中删除指定列。

sqlcode:-208

sqlstate:42707

SQL0212N 名称 是重复的表标志符,或在触发器定义的 REFERENCING 子句中多次指定。

说明

名称 指定的外部表、视图、别名或相关名与同一个 FROM 子句中的另一个外部表、视图、别名或相关名完全相同。

如果语句是 CREATE TRIGGER,那么 REFERENCING 子句可能指定了与主题表相同的名称,或者多个 OLD 或 NEW 相关名、NEW_TABLE 或 OLD_TABLE 标识有同一名称。

无法处理该语句。

用户响应

重写 SELECT 语句的 FROM 子句。使相关名与表、视图或别名相关,使得没有外部表、视图、别名或相关名与 FROM 子句中的任何其他外部表、视图、别名或相关名相同。

对于 CREATE TRIGGER 语句,更改 REFERENCING 子句中的名称以避免重复。

sqlcode:-212

sqlstate:42712

SQL0213N 参数 参数名 不在例程 例程名 中。

说明

名称为 参数名 的参数在例程 例程名 中不存在。

用户响应

请为该例程指定现有参数名,然后重新提交该语句。

sqlcode:-213

sqlstate:42703

SQL0214N 在下列位置的 ORDER BY 子句中的表达式,或在 子句类型 子句中以 表达式开始或按位置排序 开始的表达式无效。原因码:原因码

说明

子句类型 子句中的表达式 表达式开始或按位置排序 的第一部分标识的表达式无效,原因由 原因码 指定,如下所示:

1

SELECT 语句的全查询不是子查询。对于此类型的 SELECT 语句,ORDER BY 子句中不允许有表达式。仅当 子句类型 是 ORDER BY 时,才出现此原因码。

2

在 SELECT 子句中指定了 DISTINCT,而该表达式与选择列表中的表达式不能精确匹配。仅当 子句类型 是 ORDER BY 时,才出现此原因码。

3

分组是因 ORDER BY 子句中存在列函数而引起的。仅当 子句类型 是 ORDER BY 时,才出现此原因码。

4

GROUP BY 子句中的表达式不能包括标量全查询。仅当 子句类型 是 GROUP BY 时,才出现此原因码。

5

GROUP BY 子句中取消引用运算符的左边不能是变体函数。仅当 子句类型 是 GROUP BY 时,才出现此原因码。

6

ORDER BY 子句中的表达式不能包括 XMLQUERY 或 XMLEXISTS。仅当 子句类型 是 ORDER BY 时,才出现此原因码。

7

GROUP BY 子句中的表达式不能包括 XMLQUERY 或 XMLEXISTS。仅当 子句类型 是 GROUP BY 时,才出现此原因码。

8

在 LISTAGG 函数中指定了 DISTINCT,而第一个自变量表达式无法与 WITHIN GROUP 子句中指定的 ORDER BY 的第一个排序键表达式完全匹配。仅当 子句类型 是 ORDER BY 时,才出现此原因码。

9

子句类型 中所指示聚集函数的 ORDER BY 子句内的排序键具有不正确的数据类型。

10

子句类型 中所指示聚集函数的 ORDER BY 子句内的排序键表达式数目与表达式数目不相同。

11

子句类型 中所指示聚集函数的 ORDER BY 子句内的排序键具有与相应表达式的数据类型不兼容的数据类型。

无法处理该语句。

用户响应

根据下面 原因码 所指定的原因来修改 SELECT 语句:

1

从 ORDER BY 子句移除表达式。如果要尝试引用结果列,请将排序键更改为简单整数或简单列名格式。

2

从 SELECT 子句移除 DISTINCT,或者将排序键更改为简单整数或简单列名格式。

3

添加 GROUP BY 子句,或从 ORDER BY 子句移除列函数。

4

从 GROUP BY 子句移除所有标量全查询。如果期望根据标量全查询的结果的列来进行分组,那么使用嵌套表表达式或公共表表达式来首先提供一个结果表,该结果表将该表达式作为结果的一个列。

5

从 GROUP BY 子句中取消引用运算符的左边移除任何变体函数。

6

从 ORDER BY 子句中移除任何 XMLQUERY 或 XMLEXISTS 表达式。如果期望对基于 XMLQUERY 或 XMLEXISTS 表达式的结果列进行排序,那么使用嵌套表表达式或公共表表达式来首先提供一个结果表,而该表达式作为一个结果列。

7

从 GROUP BY 子句中移除任何 XMLQUERY 或 XMLEXISTS 表达式。如果期望对基于 XMLQUERY 或 XMLEXISTS 表达式的结果列进行分组,那么使用嵌套表表达式或公共表表达式来首先提供一个结果表,而该表达式作为一个结果列。

8

从 LISTAGG 函数中移除 DISTINCT,或者将 WITHIN GROUP 子句中指定的 ORDER BY 的第一个排序键表达式更改为与 LISTAGG 函数的第一个自变量表达式完全匹配。

9

在对该聚集函数的 ORDER BY 子句中的排序键指定有效数据类型的情况下,再次调用例程。

10

在表达式数目等于该聚集函数的 ORDER BY 子句中排序键表达式数目的情况下,再次调用例程。

11

在对该聚集函数的 ORDER BY 子句中的排序键指定与相应表达式的数据类型兼容的数据类型情况下,再次调用例程。

sqlcode:-214

sqlstate:42822

SQL0216N 在谓词运算符两边的元素数不匹配。谓词运算符是 谓词运算符

说明

谓词包括谓词运算符右边或左边(或两边)的元素的列表。两边的元素数必须相同。这些元素可能出现在用圆括号括起来的表达式列表中,或作为全查询中选择列表的元素出现。

无法处理该语句。

用户响应

更正在谓词运算符两边有不匹配元素数的谓词。

sqlcode:-216

sqlstate:428C4

SQL0217W 当仅在处理 Explain 信息请求时不执行语句。

说明

Explain 专用寄存器之一的当前值已设置为 EXPLAIN。此值允许预编译并说明动态 SQL 语句,但是阻止执行任何动态语句。

用户响应

通过从遇到此状态的接口或应用程序发出适当的 SET 语句,将适当的 Explain 专用寄存器的值更改为除 EXPLAIN 之外的设置。

sqlcode:+217

sqlstate:01604

SQL0219N 必需的 Explain 表 名称 不存在。

说明

调用了说明工具,但找不到必需的 Explain 表 名称。Explain 表必须在调用说明工具之前创建。

用户响应

创建必需的 Explain 表。创建 Explain 表所需的“SQL 数据定义语言”语句可在 sqllib 下 misc 目录的 EXPLAIN.DDL 文件中得到。

sqlcode:-219

sqlstate:42704

SQL0220N Explain 表 名称 的列 名称-2 的定义不正确或者丢失。

说明

调用了说明工具,但 Explain 表 名称 没有期望的定义。定义可能由于以下原因而不正确:
  • 定义了不正确的列数(如果 名称-2 是数字)
  • 对列指定了不正确的数据类型(如果 名称-2 是列名)。
  • 表的 CCSID 不正确。

用户响应

更正指定的 Explain 表的定义。创建 Explain 表所需的“SQL 数据定义语言”语句可在 sqllib 下 misc 目录的 EXPLAIN.DDL 文件中得到。

sqlcode:-220

sqlstate:55002

SQL0222N 对使用游标 游标名 的孔尝试执行了操作。

说明

如果 SQLSTATE 是 24510,那么发生了错误。对定义为 SENSITIVE STATIC 的游标 游标名 尝试执行了定位更新或删除,且当前行已经标识为删除孔或更新孔。当 DB2 尝试更新或删除与游标 游标名 的结果表的当前行相对应的数据库中的行时出现了孔,并且基础表的相应行不再存在。

如果 SQLSTATE 是 02502,那么这是一个警告。在处理对游标 游标名 的访存时检测到删除孔或更新孔。当 DB2 尝试重新访存与游标 游标名 的结果表的当前行相对应的数据库中的一行时出现了孔,并且基础表的相应行不再存在。未返回任何数据。

当已经删除了基础表的相应行时,出现了删除孔。

当在基础表中更新了基础表的相应行时出现了更新孔,以致于更新的行不再满足在游标的 SELECT 语句中指定的搜索条件。

无法处理该语句。游标仍然处于孔中。

用户响应

发出 FETCH 语句来定位一行上不是孔的游标。

sqlcode:-222

sqlstate:02502, 24510

SQL0224N 结果表与使用游标 游标名 的基本表不一致。

说明

尝试使用某一行上定义为 SENSITIVE STATIC 的游标 游标名 来执行定位的 UPDATE 或 DELETE,而结果表中的列值与基本表行中的当前值不匹配。这些行不匹配,因为在将基本表的行访存到结果表与处理定位 UPDATE 或 DELETE 之间这段时间更新了基本表的行。

无法处理该语句。游标位置未变。

用户响应

更改隔离级别,以便在游标操作期间不能再更新基本表行,或者更改应用程序,以便执行 FETCH INSENSITIVE,并再次尝试定位 UPDATE 或 DELETE。

sqlcode:-224

sqlstate:24512

SQL0225N 游标 游标名 FETCH 语句无效,因为该游标未定义为 SCROLL。

说明

已经用下列可滚动游标关键字之一指定了不可滚动游标 游标名 的 FETCH 语句:PRIOR、FIRST、LAST、BEFORE、AFTER、CURRENT、 ABSOLUTE 或 RELATIVE。对不可滚动游标仅可指定 NEXT。未访存任何数据。

无法处理该语句。游标位置未变。

用户响应

更改 FETCH 语句以除去当前访存定向关键字(例如 PRIOR 或 FIRST),并将它替换为 NEXT。另外,将游标的定义更改为可滚动。

sqlcode:-225

sqlstate:42872

SQL0227N 不允许 FETCH NEXT、PRIOR、CURRENT 或 RELATIVE,因为游标 游标名 的位置未知(sqlcodesqlstate)。

说明

游标名 的游标位置未知。在处理多个检索到的行的过程当中,游标 游标名 的先前多行 FETCH 导致了错误(SQLCODE sqlcode 以及 SQLSTATE sqlstate)。在发生错误之后,所请求的一行或多行不能返回到程序中,游标的位置仍然未知。

如果在先前的多行 FETCH 中已经提供了指示符结构,那么将已经返回了正的 SQLCODE,并且所检索到的所有行可能已经返回至应用程序。

无法处理该语句。游标位置未变。

用户响应

关闭游标,再重新打开该游标,以便重置其位置。对于可滚动游标,可以更改 FETCH 语句以指定其他访存定向之一,例如:FIRST、LAST、BEFORE、AFTER 或 ABSOLUTE,以便建立有效的游标位置,并访存一行数据。

sqlcode:-227

sqlstate:24513

SQL0228N 为只读游标 游标名 指定了 FOR UPDATE 子句。

说明

游标 游标名 被定义为 INSENSITIVE SCROLL,但是相应的 SELECT 语句包含 FOR UPDATE 子句。

无法处理该语句。

用户响应

要定义只读游标,在 DECLARE CURSOR 上指定 INSENSITIVE,但是不要将 FOR UPDATE 子句指定为游标的 SELECT 语句的一部分。

sqlcode:-228

sqlstate:42620

SQL0231W 游标 游标名 的当前位置对于当前行的 FETCH 无效。

说明

对可滚动游标 游标名 发出了 FETCH CURRENT 或 FETCH RELATIVE 0 语句。该操作无效,因为游标未定位在结果表的某行上。当前行的 FETCH 不允许跟在 FETCH BEFORE 或 FETCH AFTER 语句后面,或者跟在导致了 SQLCODE +100 的 FETCH 语句的后面。

无法处理该语句。游标位置未变。

用户响应

在尝试访存当前行之前,确保游标定位在结果表的某行上。

sqlcode:+231

sqlstate:02000

SQL0236W SQLDA 仅提供了 整数-1 个 SQLVAR 条目。整数-3 个列需要 整数-2 个 SQLVAR 条目。未设置 SQLVAR 条目。

说明

SQLDA 的 SQLN 字段的值至少应与结果集中的列数一样大。

数据库管理器未设置任何 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设为空格字符))。

用户响应

将 SQLDA 中 SQLN 字段的值增大到消息中指示的值(确保 SQLDA 足够大以支持该数量),并重新提交该语句。

sqlcode:+236

sqlstate:01005

SQL0237W SQLDA 仅提供了 整数-1 个 SQLVAR 条目。由于至少其中一个描述的列是单值类型,因此应指定了 整数-2 个 SQLVAR 条目。未设置任何“辅助 SQLVAR”条目。

说明

由于结果集其中至少一列为单值类型,因此应为 SQLVAR 条目(条目数两倍于结果集中的列数)提供空间。数据库管理器仅设置了基本 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设为空格字符))。

用户响应

如果不需要有关结果集中单值类型的更多信息,那么不需要执行任何操作。如果需要单值类型的信息,那么 SQLDA 中 SQLN 字段的值应该增大到消息中指示的值(在确保 SQLDA 足够大来支持该值之后),并且应重新提交语句。

sqlcode:+237

sqlstate:01594

SQL0238W SQLDA 仅提供了 整数-1 个 SQLVAR 条目。因为正在描述的列中至少一列是 LOB 或结构化类型,所以 整数-3 个列需要 整数-2 个 SQLVAR 条目。未设置 SQLVAR 条目。

说明

由于结果集中至少有一列是 LOB 或结构化类型,因此必须为两倍于结果集中列数的 SQLVAR 条目提供空间。还要注意,结果集中一列或多列可能是单值类型。

数据库管理器未设置任何 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设置为空格字符))。

用户响应

将 SQLDA 中 SQLN 字段的值增大到消息中指示的值(在确保 SQLDA 足够大来支持该值之后),并重新提交该语句。

sqlcode:+238

sqlstate:01005

SQL0239W SQLDA 仅提供了 整数-1 个 SQLVAR 条目。由于正在描述的列中至少有一列是单值类型或引用类型,因此 整数-3 个列需要 整数-2 个 SQLVAR 条目。未设置 SQLVAR 条目。

说明

如果结果集中的任何列都为单值类型或引用类型,那么应为两倍于结果集中列数的 SQLVAR 条目提供空间。

数据库管理器未设置任何 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设置为空格字符))。

用户响应

如果需要单值类型或引用类型的信息,那么 SQLDA 中 SQLN 字段的值应该增大为消息中指示的值(在确保 SQLDA 足够大,可支持该数量之后),并且应重新提交语句。如果不需要有关结果集中的单值类型或引用类型的其他信息,那么有可能重新提交该语句,以只提供足够的 SQLVAR 条目来容纳结果集中的列数。

sqlcode:+239

sqlstate:01005

SQL0242N 对象列表中多次指定了名为 对象名,且类型为 对象类型 的对象。

说明

在类型为 对象类型 的对象名列表中,多次指定了名为 对象名 的对象。不能多次对该对象执行该语句的操作。

用户响应

更正列表中重复的对象,除去重复出现的那些对象。

sqlcode:-242

sqlstate:42713

SQL0243N 不能为指定的 SELECT 语句定义 SENSITIVE 游标 游标名

说明

游标 游标名 已定义为 SENSITIVE,但 SELECT 语句的内容要求数据库管理器构建该游标的临时结果表,而数据库管理器无法保证在此游标外部进行的更改是可视的。当查询的内容使结果表为只读时,就会发生这种情况。例如,如果查询中包括连接,那么结果表是只读的。在这些情况下,游标必须定义为 INSENSITIVE 或 ASENSITIVE。

无法处理该语句。

用户响应

更改查询的内容以便产生不是只读的结果表,或者将游标的类型更改为 INSENSITIVE 或 ASENSITIVE。

sqlcode:-243

sqlstate:36001

SQL0244N 在 FETCH 上指定的 SENSITIVITY 灵敏度 对于游标 游标名 无效。

说明

在 FETCH 上指定的灵敏度选项 灵敏度 与对游标 游标名 有效的灵敏度选项有冲突。以下列表显示了在 FETCH 上可以指定的内容:
 
DECLARE CURSOR
FETCH Statement
INSENSITIVE         INSENSITIVE
SENSITIVE STATIC    SENSITIVE
                    或 INSENSITIVE
SENSITIVE DYNAMIC   SENSITIVE
SENSITIVE           SENSITIVE
ASENSITIVE          INSENSITIVE
                    或 SENSITIVE
                    (取决于游标的有效灵敏度)

对于不可滚动游标,不能指定灵敏度选项。

无法处理该语句。

用户响应

更改或除去在 FETCH 上指定的灵敏度选项。

sqlcode:-244

sqlstate:428F4

SQL0245N 例程名 例程的调用具有多义性。位于位置 位置 的自变量没有最佳匹配。

说明

在 SQL 语句中引用例程时,数据库管理器必须准确地确定所要调用的例程。对于函数而言,此过程称为“函数解析”,它既适用于内置函数也适用于用户定义的函数。当函数调用存在多义性时,将返回此错误。如果可能有两个或更多候选函数满足函数解析的条件,就会发生这种情况。

在这种情况下,这两个候选函数在位置 position 中都有参数,但是它们的参数的数据类型不在同一个数据类型优先顺序列表中。将无法确定自变量的最佳匹配。

用户响应

更改 SQL 语句以将此自变量显式强制类型转换为期望的数据类型、函数的定义或 SQL 路径,以消除这一组候选函数之间的多义性,然后再次尝试调用此函数。

sqlcode:-245

sqlstate:428F5