在 Linux 中,我连接到 DB2 并尝试获取最旧的发票。使用下面的查询时,它显示错误SQL0206N "INVOICEDATE" is not valid in the context where it is used.SQLSTATE=42703
db2 "select min(INVOICEDATE) from RHA2";
我该如何解决此错误?有什么帮助吗?
提前致谢。
答案1
$ db2 "?sql206"
SQL0206N “”在使用它的上下文中无效。
解释:
在下列情况下可能会发生此错误:
对于 INSERT 或 UPDATE 语句,指定的列不是指定为插入或更新对象的表或视图的列。对于 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 上下文的参数。
sql 代码:-206
sqlstate:42703