5

如果我运行以下查询:

select count(*) from all_tab_columns
        where column_name = 'foo'
        and table_name = 'VIEW0';

我得到 0 的结果。我预计1。

但是,如果我运行以下查询,我会返回许多(预期的)行:

select foo from VIEW0;

为什么?我假设我犯了一些愚蠢的语法错误,或者我的理解错了。

4

3 回答 3

11

可能原因是您有区分大小写的设置。

尝试添加UPPER如下功能。

select count(*) from all_tab_columns
        where column_name = upper('foo')
        and table_name = 'VIEW0';
于 2013-06-28T12:38:46.920 回答
1

ALL_TAB_COLUMNS 描述了当前用户可访问的表、视图和集群的列。检查运行此查询的用户是否有权访问所需的表。

于 2013-06-28T12:46:40.913 回答
0

至少在 11g 中,您似乎无法从 PL/SQL 访问数据字典表。在 PL/SQL 内的 all_tab_columns 上运行任何选择始终不会返回任何结果。尝试访问 dba_tab_columns 将无法编译,因为编译器认为该表(或视图)不存在。

我很想看看如何从 PL/SQL 访问数据字典。

于 2017-06-30T17:16:05.633 回答