sql >> Databasteknik >  >> RDS >> Oracle

Vyn ALL_PROCEDURES visar inte PROCEDURE_NAME

Från dokumentation,

ALL_PROCEDURES listar alla funktioner och procedurer, tillsammans med tillhörande egenskaper. Till exempel anger ALL_PROCEDURES om en funktion är pipelined, parallellaktiverad eller en aggregatfunktion. Om en funktion är pipelined eller en aggregerad funktion, identifieras också den associerade implementeringstypen (om någon).

Det klargör inte om det skulle lista en STÅENDE PROCEDUR och en procedur insvept i ett PAKET på samma sätt eller anser den det annorlunda. Sedan, procedure_name skulle inte lista namnet på en fristående procedur som framgår av testfallet i frågan ovan.

PROCEDURE_NAME kolumnen kommer bara att ha procedurnamnet för de procedurer som är en del av ett PACKAGE . För STANDALONE PROCEDURER måste du använda 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 bara få listan över procedurer med hjälp av procedure_name om den är inslagen i ett paket.

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 kan du se proceduren_namn som den faktiska proceduren och objektnamn som paketnamn.

Naturligtvis, mestadels i produktionssystem skulle vi ha paket, och inte fristående procedurer. Men medan vi testar och demos kompilerar och kör vi fristående procedurer. Så det är bra att veta hur Oracle underhåller informationen i *_PROCEDURES-vyer .




  1. Följ med oss ​​för en introduktion till åtkomst med SQL Server

  2. Hur man kontrollerar PostgreSQL-versionen

  3. kontrollera om det är en nummerfunktion i Oracle

  4. Hur klassificeras SQL-kommandon | UBIQ