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

Tidak dapat menemukan prosedur dalam tampilan DBA_PROCEDURES

CATATAN Silakan lihat bagian UPDATE untuk jawaban yang benar.

Nama prosedur tidak boleh dalam huruf kecil dalam tampilan DBA_PROCEDURES. Gunakan huruf besar, atau terapkan fungsi UPPER.

SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE procedure_name ='GG';

PERBARUI

Satu-satunya kasus ketika Anda dapat memiliki nama dalam huruf kecil adalah jika Anda menyertakannya dalam tanda kutip ganda saat kompilasi.

Misalnya,

SQL> CREATE OR REPLACE
  2  PROCEDURE "p"
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL> SELECT object_name, procedure_name, object_type FROM user_procedures where procedure_name='p';

no rows selected

SQL>

Namun tampilan di atas tetap tidak akan mengembalikan hasil apa pun untuk PROCEDURE_NAME .

Alasan

PROCEDURE_NAME kolom hanya akan memiliki nama prosedur untuk prosedur yang merupakan bagian dari PAKET . Untuk PROSEDUR BERDIRI SENDIRI Anda harus menggunakan OBJECT_NAME .

SQL> -- stand alone procedure in lower case
SQL> CREATE OR REPLACE
  2  PROCEDURE "p"
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL>
SQL>  -- package
SQL> CREATE OR REPLACE
  2  PACKAGE test_p
  3  IS
  4    PROCEDURE p;
  5  END test_p;
  6  /

Package created.

SQL>
SQL> -- package body with a procedure
SQL> CREATE OR REPLACE
  2  PACKAGE BODY test_p
  3  IS
  4  PROCEDURE p
  5  IS
  6  BEGIN
  7    NULL;
  8  END;
  9  END test_p;
 10  /

Package body created.

SQL>
SQL> SELECT object_name, procedure_name, object_type FROM user_procedures;

OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
--------------- --------------- ---------------
TEST_P          P               PACKAGE
p                               PROCEDURE
TEST_P                          PACKAGE

SQL>

Jadi, seperti yang Anda lihat, procedure_name hanya memiliki package's procedure , namun stand-alone procedure hanya terdaftar di bawah object_name .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan Wawancara Oracle

  2. Oracle 11g:Di PL/SQL apakah ada cara untuk mendapatkan info tentang baris yang dimasukkan dan diperbarui setelah pernyataan MERGE DML?

  3. ORACLE Pilih Distinct mengembalikan banyak kolom dan di mana

  4. cara untuk menghindari tabel temp global di Oracle

  5. Apakah ada cara terbaik untuk menghindari eksekusi proses lebih dari sekali di Oracle?