如果我运行以下查询:
select count(*) from all_tab_columns
where column_name = 'foo'
and table_name = 'VIEW0';
我得到0表示结果。我期待1.
但是,如果我运行以下查询,我会返回许多(预期)行:
select foo from VIEW0;
为什么呢?我假设我正在制作一些愚蠢的语法错误或者我的理解已经过时了。
答案 0 :(得分:8)
可能原因是你有区分大小写的设置。
尝试添加UPPER
功能,如下所示。
select count(*) from all_tab_columns
where column_name = upper('foo')
and table_name = 'VIEW0';
答案 1 :(得分:0)
ALL_TAB_COLUMNS describes the columns of the tables, views, and clusters accessible to the current user.检查运行此查询的用户是否可以访问所需的表。
答案 2 :(得分:0)
至少在11g中,您无法从PL / SQL访问数据字典表。在PL / SQL内的all_tab_columns上运行任何选择始终不返回任何结果。尝试访问dba_tab_columns将无法编译,因为编译器认为表(或视图)不存在。
我很想看看如何从PL / SQL访问数据字典。