sql >> データベース >  >> RDS >> Oracle

ビューの作成中にORA-00942エラーが生成されます

    ビューを作成するときに問題を診断する最初のステップは、selectを試すことです。 独自の部分。この場合でもORA-00942エラーが発生しますが、問題はクエリとアクセスの問題であり、ビューとは特に関係ありません。

    ORA-00942:テーブルまたはビューが存在しませんを取得した場合 、次のいずれかの理由によるものです:

    1. 入力したテーブルまたはビューの名前は実際には存在しません。

      • スペルを確認してください。タイプミスがある可能性があります。

      • データベースが存在するデータベースに接続していますか?おそらく、あなたはそれを持っていないテストシステムを使用しています。

      • dba_objectsをクエリします テーブルが別のスキーマに存在するかどうかを確認します。 (dba_objectsを照会する権限がない場合は、all_objects 表示する権限があるすべてのものが一覧表示されます。これは役立つ場合があります。)

    2. 実際には存在しますが、別のスキーマにあります。
      その場合、2つの問題が考えられます:

      • クエリを実行する権限がありません。テーブルの所有者は、grant read on xyz必要があります (xyzの代わりに実際のテーブル名を使用してください )どちらかに

        • あなた

        • public (すべての人がデータを見ることができるようにしたい場合は、常にお勧めできるとは限りません)

        • 役割 持っているもの(ただし、ロールは格納されたPL/SQLまたはビュー ただし、ロールのおかげで別のスキーマのテーブルをクエリできる可能性がありますが、それを使用するビューまたはプロシージャを作成することはできません。)

      • スキーマを指定する必要があります。 REGIONSにクエリを実行するとします。 HRのテーブル ただし、SCOTTとして接続されています 。 select * from regionsした場合 SCOTT.REGIONSを検索します 、存在しません。これを修正するには、次のいずれかを実行します。

        • hr.regionsを使用します クエリで明示的に。

        • スキーマで、create or replace synonym regions for hr.regions;
          これで、regionsを参照するたびに 、データベースは自動的にhr.regionsにリダイレクトされます 。

        • パブリックシノニムを作成する権限を持つスキーマ内:
          create or replace public synonym regions for hr.regions;
          これで、データベースに接続するすべての人がregionsへの参照を持つようになります hr.regionsにリダイレクトされます 、これは必ずしも良い考えではありませんが、とにかく1つのオプションです。

        • alter session set current_schema = hr;
          現在、オブジェクトの名前を解決するためのデフォルトのスキーマはHRです。 ログインしたものではありません。テーブルを所有するユーザーとは異なるユーザーとして常にログインするアプリケーションの場合、ログオントリガー後 したがって、これは常に設定されます。次に、regionsを参照するだけです。 スキーマや同義語を指定する必要はありません。



    1. 12cアダプティブプラン

    2. MySQLにインデックスによるFIND_IN_SETはありますか?

    3. 画像フィールドをファイルにエクスポートするにはどうすればよいですか?

    4. 時間値を保持した動的PL/SQL日付パラメータ