sql >> Database >  >> RDS >> Oracle

Kan procedure niet vinden in DBA_PROCEDURES-weergave

OPMERKING Kijk in het gedeelte UPDATE voor het juiste antwoord.

De procedurenaam mag niet in kleine letters staan ​​in de DBA_PROCEDURES-weergave. Gebruik hoofdletters of pas de UPPER-functie toe.

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

UPDATE

Het enige geval waarin u de naam in kleine letters zou kunnen hebben, is als u deze tijdens het compileren tussen dubbele aanhalingstekens plaatst.

Bijvoorbeeld,

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>

Maar toch levert de bovenstaande weergave geen resultaat op voor PROCEDURE_NAME .

Reden

PROCEDURE_NAME kolom heeft alleen de procedurenaam voor de procedures die deel uitmaken van een PAKKET . Voor STAND ALONE PROCEDURES je moet OBJECT_NAME . gebruiken .

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>

Dus, zoals je kunt zien, de procedure_name heeft alleen de procedure van het package's procedure , maar de stand-alone procedure wordt alleen vermeld onder object_name .



  1. Laravel + Vagrant =Toegang geweigerd voor gebruiker 'root'@'localhost'

  2. Stap voor stap postgres_fdw

  3. Hoe maak je een trigger voor het verwijderen van php myadmin

  4. De locatie van gegevensbestanden en logbestanden opgeven bij het maken van een database in SQL Server