运行简单的目录查询时:
SELECT * 来自SYSCOLUMNS
我只回了几百行。这是AS400上的DB2 7.1。有几十种模式,共有一千多个表。我希望这个查询返回几千行,而不是几百行。我回来的行只来自我的测试模式和另一个开发人员的行。
我是DB2的新手(在Oracle工作了20多年),所以这很令人费解。 IBM文档说SELECT在SYSCOLUMNS上被授予PUBLIC,所以我应该得到一切,对吧?我不知道“SYSCOLUMNS”指向的标记,视图或本地表(它可以解释事物)。在我的环境中,对数据库的每个查询都需要SCHEMA_NAME.TABLE_NAME,因此这个SYSCOLUMNS(没有模式名称)已经是一个例外。
提前感谢,
分贝
答案 0 :(得分:6)
答案取决于您正在使用的命名模式。
SCHEMA.TABLE
SCHEMA/TABLE
(在幕后,架构映射到库,表格映射到文件。)
在* SQL模式下,如果未指定架构,则使用CURRENT SCHEMA
的值。默认情况下,您的CURRENT SCHEMA
是您的用户个人资料,但您可以这样更改:
SET CURRENT SCHEMA = SOMELIB
在* SYS模式下,如果未指定架构,则库列表用于将表名解析为特定文件。
无论如何,我猜你是在* SQL命名模式,并且你当前的架构设置为你的测试架构。查询不合格的SYSCOLUMNS将为您提供当前架构中的列。
我会尝试以下操作,这应该将范围扩大到系统上的所有列:
SELECT * FROM QSYS2.SYSCOLUMNS