Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kesalahan ORA-00942 dihasilkan saat membuat tampilan

Langkah pertama dalam mendiagnosis masalah saat membuat tampilan adalah mencoba select bagian tersendiri. Dalam hal ini Anda masih akan mendapatkan kesalahan ORA-00942, tetapi masalahnya sekarang hanya masalah kueri dan akses dan tidak berkaitan dengan tampilan secara khusus.

Saat Anda mendapatkan ORA-00942:tabel atau tampilan tidak ada , itu karena:

  1. Nama tabel atau tampilan yang Anda ketik benar-benar tidak ada.

    • Periksa ejaannya - mungkin ada kesalahan ketik.

    • Apakah Anda terhubung ke database yang ada? Mungkin Anda menggunakan sistem pengujian yang tidak memilikinya.

    • Kueri dba_objects untuk melihat apakah tabel ada di skema lain. (Jika Anda tidak memiliki hak istimewa untuk menanyakan dba_objects, all_objects daftar semua yang Anda memiliki izin untuk melihat, yang mungkin bisa membantu.)

  2. Ini benar-benar ada, tetapi dalam skema lain.
    Dalam hal ini, ada dua kemungkinan masalah:

    • Anda tidak memiliki izin untuk menanyakannya. Pemilik tabel harus grant read on xyz (ganti nama tabel sebenarnya untuk xyz ) ke salah satu

      • kamu

      • public (jika Anda ingin semua orang dapat melihat data, tidak selalu disarankan)

      • peran yang Anda miliki (tetapi peran tidak digunakan oleh PL/SQL yang disimpan atau tampilan , jadi mungkin saja Anda dapat membuat kueri tabel dalam skema lain berkat peran yang Anda miliki, namun tetap tidak dapat membuat tampilan atau prosedur yang menggunakannya.)

    • Anda perlu menentukan skema. Katakanlah Anda ingin menanyakan REGIONS tabel di HR tetapi Anda terhubung sebagai SCOTT . Jika Anda hanya select * from regions itu akan mencari SCOTT.REGIONS , yang tidak ada. Untuk memperbaikinya, lakukan salah satu hal berikut:

      • gunakan hr.regions secara eksplisit dalam kueri Anda.

      • dalam skema Anda, create or replace synonym regions for hr.regions;
        Sekarang setiap kali Anda merujuk ke regions , database akan secara otomatis dialihkan ke hr.regions .

      • dalam skema apa pun dengan izin untuk membuat sinonim publik:
        create or replace public synonym regions for hr.regions;
        Sekarang semua orang yang terhubung ke database akan memiliki referensi ke regions dialihkan ke hr.regions , yang tidak selalu merupakan ide yang baik, tetapi tetap merupakan salah satu opsi.

      • alter session set current_schema = hr;
        Sekarang skema default untuk menyelesaikan nama objek adalah HR dan bukan yang Anda masuki. Untuk aplikasi yang selalu masuk sebagai pengguna yang berbeda dari yang memiliki tabel, Anda dapat membuat setelah pemicu masuk jadi ini selalu diatur. Kemudian mereka bisa merujuk ke regions dll tanpa perlu menentukan skema apa pun dan tanpa sinonim apa pun.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyalin data dari Excel ke oracle?

  2. ORA-01840:nilai input tidak cukup panjang untuk format tanggal di Oracle Insert menggunakan Select

  3. Cara mengekstrak nomor bulan dari tanggal di Oracle

  4. Manfaat Mempelajari Sistem DB Baru

  5. Bidang Oracle ke SQL2005 DATETIME meluap di SSIS