sql >> Database teknologi >  >> RDS >> Oracle

ALL_PROCEDURES-visningen viser ikke PROCEDURE_NAME

Fra dokumentation,

ALL_PROCEDURES viser alle funktioner og procedurer sammen med tilknyttede egenskaber. For eksempel angiver ALL_PROCEDURES, hvorvidt en funktion er pipelinet, parallel aktiveret eller en aggregatfunktion. Hvis en funktion er pipelinet eller en aggregeret funktion, identificeres den tilknyttede implementeringstype (hvis nogen) også.

Det afklarer ikke, om det vil angive en STÅENDE PROCEDURE og en procedure pakket ind i en PAKKE på samme måde eller betragter den det anderledes. Siden er procedure_name ville ikke angive navnet på en selvstændig procedure som set i testcasen i spørgsmålet ovenfor.

PROCEDURE_NAME kolonne vil kun have procedurenavnet for de procedurer, der er en del af en PACKAGE . For STÅENDE PROCEDURER skal du bruge OBJECT_NAME .

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>

Du kan kun få listen over procedurer ved at bruge procedure_name, hvis den er pakket ind i en pakke.

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 kunne du se procedurenavn som den faktiske procedure og objektnavn som pakkenavn.

Selvfølgelig ville vi for det meste i produktionssystemer have pakker og ikke selvstændige procedurer. Men mens vi tester og demoer, kompilerer og kører vi selvstændige procedurer. Så det er godt at vide, hvordan Oracle vedligeholder oplysningerne i *_PROCEDURES-visninger .




  1. PHP, ORM, MSSQL og Unicode, er det muligt at få disse til at fungere sammen?

  2. Hvordan bygger man RUNAS /NETONLY funktionalitet ind i et (C#/.NET/WinForms) program?

  3. Sådan får du en liste over kolonner med unikke begrænsninger i SQL Server-databasen - SQL Server / TSQL Tutorial Del 98

  4. PostgreSQL dato() med tidszone