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

Mendapatkan kesalahan saat memanggil fungsi apa pun dalam kueri SQL dalam sebuah paket tanpa mendeklarasikan fungsi dalam spesifikasi paket

Tidak ada hubungannya sama sekali dengan deklarasi maju.

Ini berkaitan dengan fakta bahwa Anda menggunakan kueri SQL untuk memanggil fungsi . Sepertinya saat menggunakan pernyataan untuk memanggil suatu fungsi, Anda tidak lagi berada di dalam cakupan paket PL/SQL, sehingga Anda hanya dapat memanggil fungsi yang tersedia untuk umum.

Mengenai alasannya , saya hanya bisa menebak, jadi jangan anggap remeh, tapi PL/SQL dan SQL memiliki mesin yang berbeda . Jadi, ketika melakukan kueri sql, bahkan di dalam paket pl/sql Anda, Anda pergi ke tingkat SQL di mana ia akan memeriksa lagi izin sesuai dengan mesin SQL. Jadi ia tidak tahu itu dijalankan dari dalam paket PL/SQL dan Anda harus diizinkan untuk memanggil fungsi privat.

Saya pikir perbedaan mesin dapat diperiksa dengan mudah, coba gunakan varchar2 dari 32000, itu akan berfungsi dalam fungsi pl/sql Anda. Sekarang, jika Anda memanggil fungsi pl/sql Anda mengembalikan varchar2(32000) , itu akan gagal. Ini adalah masalah yang saya alami, tetapi saya tidak memiliki database untuk memberikan cuplikannya kepada Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Query, Rata-rata naik dan pasangan yang telah naik paling banyak puncak

  2. Apakah Oracle memiliki konsep indeks yang difilter?

  3. Koneksi ke Oracle melalui TNS tidak berfungsi

  4. Pengelompokan data ke dalam tabel yang berbeda berdasarkan tanggal minimum suatu peristiwa

  5. Kesalahan SQL:ORA-00913:terlalu banyak nilai