DB2 syscolumns不返回所有列

Dav*_*mer 2 db2 ibm-midrange

运行简单的目录查询时:

SELECT*FROM SYSCOLUMNS

我回来只有几百行.这是AS400上的DB2 7.1.有几十种模式,共有一千多个表.我希望这个查询返回几千行,而不是几百行.我回来的行只来自我的测试模式和另一个开发人员的行.

我是DB2的新手(在Oracle工作了20多年),所以这很令人费解.IBM文档说SELECT在SYSCOLUMNS上被授予PUBLIC,所以我应该得到一切,对吧?我不知道令牌"SYSCOLUMNS"指向的是什么,一个视图或本地表(它可以解释事物).在我的环境中,对数据库的每个查询都需要SCHEMA_NAME.TABLE_NAME,因此这个SYSCOLUMNS(没有模式名称)已经是一个例外.

提前致谢,

D b

dmc*_*dmc 6

答案取决于您使用的命名模式.

  • *SQL模式:您将表限定为 SCHEMA.TABLE
  • *SYS模式:您将表限定为 SCHEMA/TABLE

(在幕后,架构映射到库,表格映射到文件.)

在*SQL模式下,如果未指定架构,CURRENT SCHEMA则使用值.默认情况下,您的CURRENT SCHEMA是用户个人资料,但您可以这样更改:

SET CURRENT SCHEMA = SOMELIB
Run Code Online (Sandbox Code Playgroud)

在*SYS模式下,如果未指定架构,则库列表用于将表名解析为特定文件.

无论如何,我猜你是在*SQL命名模式,你当前的架构设置为你的测试架构.查询不合格的SYSCOLUMNS将为您提供当前架构中的列.

我会尝试以下方法,这应该扩大系统上所有列的范围:

SELECT * FROM QSYS2.SYSCOLUMNS
Run Code Online (Sandbox Code Playgroud)