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

tabel atau tampilan Oracle tidak ada dari dalam prosedur tersimpan

Kemungkinan besar, masalahnya adalah bahwa hibah itu dilakukan melalui peran. Hak istimewa yang diberikan kepada pengguna tidak tersedia dalam prosedur tersimpan hak pendefinisi (default).

Di SQL Developer, relatif mudah untuk memverifikasi bahwa ini masalahnya. Jika Anda menjalankan perintah

SET ROLE none

dan kemudian jalankan pernyataan SELECT, saya berharap Anda akan mendapatkan kesalahan ORA-00942 yang sama.

Dengan asumsi demikian, solusinya umumnya adalah meminta pemilik tabel dalam skema YYY untuk memberikan akses ke tabel secara langsung kepada Anda daripada memberikan akses melalui peran. Kecuali itu, Anda bisa mendefinisikan prosedur tersimpan Anda sebagai prosedur tersimpan hak pemanggil dengan menambahkan AUTHID CURRENT_USER ke deklarasi. Itu akan membuat pemanggil prosedur perlu memiliki akses ke objek yang mendasarinya tetapi itu akan memungkinkan prosedur Anda untuk menggunakan hak istimewa yang diberikan melalui peran.

Jika Anda ingin membuat prosedur tersimpan hak pemanggil, Anda juga perlu merujuk ke nama tabel menggunakan SQL dinamis untuk menunda pemeriksaan hak istimewa ke runtime. Jadi Anda akan memiliki sesuatu seperti

CREATE OR REPLACE PROCEDURE PRC_SOMESP 
  AUTHID CURRENT_USER
AS 
  l_cnt pls_integer;
BEGIN
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM yyy.TableA' INTO l_cnt;
END PRC_SOMESP;

jika Anda menginginkan prosedur tersimpan hak pemanggil yang menanyakan tabel TableA dalam skema XXX.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyetel ukuran pengambilan baris Oracle lebih tinggi membuat aplikasi saya lebih lambat?

  2. Bagaimana cara menyembuhkan penyebab pengecualian Hibernate IllegalArgumentException terjadi saat memanggil setter?

  3. Mengapa Oracle 9i memperlakukan string kosong sebagai NULL?

  4. Membuat Mesin Virtual Dengan Oracle VM Virtual Box

  5. Cara Mengatasi ORA-29280:jalur direktori tidak valid