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 に対して select を実行すると、常に結果が返されません。dba_tab_columns にアクセスしようとしてもコンパイルされません。これは、コンパイラがテーブル (またはビュー) が存在しないと見なすためです。

PL/SQL からデータ ディクショナリにアクセスする方法を知りたいです。

于 2017-06-30T17:16:05.633 に答える