未找到列或全局变量

问题描述 投票:0回答:1

问题是在我们的IBM DB2数据库中查询使用Aqua Data Studio创建的表时,除非我使用系统名称,否则无法指定列名。很久以前的表没有这个问题。查询可以在其中找到列名称。使用通配符也没有问题,列名显示得很好。为清楚起见:

  • 这工作:SELECT * FROM WUNITS.DVIRS
  • 这工作:SELECT ID___00001 FROM WUNITS.DVIRS
  • 这不是:SELECT FROM FROM WUNITS.DVIRS
  • 这适用于以相同方式创建的旧表:SELECT Id FROM WUNITS.DVIRS

以下是列定义的屏幕截图

enter image description here

我究竟做错了什么?

sql db2 db2-400
1个回答
2
投票

既然你提到系统名称,我会假设你正在为IBM i使用Db2 ....

我怀疑你用引用的列名创建了表...否则你不会看到混合大小写的列名,它们都是大写字母。

例如:

create table dtcwilt.dvirs (
  "Id" bigint
  , "AssetNumber" varchar(25)
  , WoNumber bigint
  , WoStatusId int
)

不确定您使用什么工具来显示列,但ACS架构工具会显示引用的名称。

enter image description here

引号实际上是名称的一部分,您需要在选择中使用带引号的名称,并使用正确的大小写:

这应该工作:

SELECT "Id" FROM WUNITS.DVIRS

这不会:

SELECT "ID" FROM WUNITS.DVIRS
© www.soinside.com 2019 - 2024. All rights reserved.