【问题标题】:SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=SYSCAT.COLUMNS, DRIVER=3.54.54SQL 错误:SQLCODE=-204,SQLSTATE=42704,SQLERRMC=SYSCAT.COLUMNS,驱动程序=3.54.54
【发布时间】:2016-09-20 01:15:22
【问题描述】:

您好,我正在尝试查找 db2 表的列数。我有架构名称和表名称详细信息。 尝试过

select COUNT(*) from SYSCAT.COLUMNS  WHERE TABNAME = 'ABC' and TABSCHEMA='XYZ'

SELECT COUNT(*) FROM sys.columns WHERE object_id = OBJECT_ID('ABC')

但不幸的是,他们都在抛出错误。

需要有关我在 db2 数据库中查找表的列数问题的建议

【问题讨论】:

  • 我已经在标题中指定了
  • SQL 错误:SQLCODE=-204,SQLSTATE=42704,SQLERRMC=SYSCAT.COLUMNS,DRIVER=3.54.54
  • 你确定它是 db2 而不是 MSSql。因为 sys.columns 是一个 MSSQL 系统表。您的 DB2 数据库是否链接到 MSSQL 数据库?
  • 是的,它只是 db2。但是为什么我的第一个查询失败了?
  • 如果没有SYSCAT.COLUMNS,那么它可能不是 DB2 for LUW。

标签: sql db2 db2-luw


【解决方案1】:

您好,我终于可以通过将查询修改为来解决此问题

select count(*) from sysibm.syscolumns where tbname = 'ABC' and TBCREATOR = 'XYZ'

其中 TBCREATOR 是模式名,tbname 是表名。

【讨论】:

    【解决方案2】:

    此代码适用于系统 i (AS400...)

     select * from qsys2.syscolumns                              
     where COLUMN_NAME='YOURCOLUMNNAME'                          
     and TABLE_NAME='YOURTABLENAME' and TABLE_SCHEMA='YOURLIB'   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多