テーブルのリストのOracleデータベースをクエリする際の問題:「テーブルまたはビューは存在しません」

StackOverflow https://stackoverflow.com/questions/3777760

質問

私のプログラムでは、Oracle 11Gデータベースのスキーマにアクセスする必要があります。このようなクエリを使用して、テーブルのリストを取得しようとしています。

SELECT t.TABLE_NAME, t.OWNER
FROM ALL_TABLES t
WHERE t.DROPPED = 'NO'
ORDER BY t.TABLE_NAME

クエリが機能し、テーブルのリストを取り戻します。残念ながら、返されたテーブル名を使用してテーブルの一部をクエリすると、次のエラーが表示されます。

ORA-00942:テーブルまたはビューは存在しません

このエラーの原因は何ですか?それは特権になるでしょうか?

別の問題では、同じ名前の2つまたはテーブルが潜在的にある可能性があるか、2つを区別できるかについても少し混乱しています。これに注意する必要がありますか?

.NETのOracle.DataAccessプロバイダーを使用して、データベースに接続しています。これはリモートサーバーであり、残念ながらアクセスは非常に限られています。

役に立ちましたか?

解決

それは特権にかかっている可能性があります。しかし、それはテーブルが別のスキーマにあることにかかっている可能性があり、それの同義語はありません。オーナーとテーブル名の資格を得ると機能しますか?つまり、[owner]から[table_name]から選択しますか?

他のヒント

all_tablesビューにアクセスできるからといって、このビューで取得するテーブルを実際に選択できるわけではありません。それらを選択するには、テーブルに適切な助成金を選択する必要があります。

2つのテーブルは、異なるスキーマに属している限り同じ名前を持つことができます(スコープは実際にはテーブルよりも広く、スキーマは同じ名前の2つのオブジェクト(表、ビュー...)を持つことはできません)

はい、それはセキュリティ機能です - テーブルから選択する許可がない場合、Oracleは通常、それが存在することをあなたに認めさえしません(通常のユーザーは、認められていない限り、ALL_から選択されているものを見ることができませんDBAによって)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top