sql >> Database >  >> RDS >> Oracle

ALL_PROCEDURES-weergave toont de PROCEDURE_NAME niet

Uit documentatie,

ALL_PROCEDURES geeft een overzicht van alle functies en procedures, samen met bijbehorende eigenschappen. ALL_PROCEDURES geeft bijvoorbeeld aan of een functie pijplijnig, parallel ingeschakeld of een aggregatiefunctie is. Als een functie gepijplijnd is of een geaggregeerde functie, wordt het bijbehorende implementatietype (indien aanwezig) ook geïdentificeerd.

Het maakt niet duidelijk of het een STAND ALONE PROCEDURE zou vermelden en een procedure verpakt in een PAKKET op dezelfde manier of beschouwt zij het anders. Sinds de procedure_name zou de naam van een op zichzelf staande procedure niet vermelden, zoals te zien is in de testcase in de bovenstaande vraag.

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

SQL> show user
USER is "LALIT"
SQL> CREATE OR REPLACE
  2  PROCEDURE new_proc
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL>
SQL> SELECT owner,
  2    object_name,
  3    procedure_name,
  4    object_type
  5  FROM all_procedures
  6  WHERE owner='LALIT'
  7  AND object_name='NEW_PROC';

OWNER OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
----- --------------- --------------- ---------------
LALIT NEW_PROC                        PROCEDURE

SQL>

U kunt de lijst met procedures alleen verkrijgen met procedure_name als deze in een pakket is verpakt.

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

Package created.

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

Package body created.

SQL> SELECT owner,
  2    object_name,
  3    procedure_name,
  4    object_type
  5  FROM all_procedures
  6  WHERE owner='LALIT'
  7  AND procedure_name='NEW_PROC';

OWNER OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
----- --------------- --------------- -----------
LALIT NEW_PACK        NEW_PROC        PACKAGE

SQL>

Nu zou je de procedurenaam kunnen zien als de eigenlijke procedure, en de objectnaam als de pakketnaam.

Natuurlijk zouden we in productiesystemen meestal pakketten hebben en geen op zichzelf staande procedures. Maar tijdens het testen en demo's compileren en voeren we stand-alone procedures uit. Het is dus goed om te weten hoe Oracle de informatie in *_PROCEDURES views . bijhoudt .




  1. Hoe installeer ik Postgis op een Keg-installatie van [email protected] met Homebrew?

  2. Slaapstand:Mysql InnoDB-tabellen maken in plaats van MyISAM

  3. Hoe een bulk invoegen in MySQL te doen?

  4. Hoe video-inhoud op te slaan in de SQLite-database (niet het videopad)