sql >> Databáze >  >> RDS >> Oracle

Zobrazení ALL_PROCEDURES nezobrazuje PROCEDURE_NAME

Z dokumentace

ALL_PROCEDURES uvádí všechny funkce a procedury spolu s přidruženými vlastnostmi. Například ALL_PROCEDURES označuje, zda je funkce zřetězená, povolená paralelně nebo agregační funkce. Pokud je funkce zřetězená nebo agregovaná, je také identifikován přidružený typ implementace (pokud existuje).

Není objasněno, zda bude uveden SAMOTNÝ POSTUP a proceduru zabalenou do BALÍKU stejným způsobem nebo to považuje jinak. Protože procedure_name neuvádí název samostatné procedury, jak je vidět v testovacím případě v otázce výše.

PROCEDURE_NAME sloupec bude mít pouze název procedury pro procedury, které jsou součástí PACKAGE . Pro STAND ALONE PROCEDUS musíte použít 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>

Seznam procedur můžete získat pomocí procedury název pouze v případě, že je zabalen v balíčku.

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>

Nyní můžete vidět název_procedury jako skutečnou proceduru a název_objektu jako název_balíčku.

Samozřejmě, většinou v produkčních systémech bychom měli balíčky, a ne samostatné postupy. Ale během testování a ukázek kompilujeme a spouštíme samostatné procedury. Je tedy dobré vědět, jak Oracle udržuje informace v zobrazeních *_PROCEDURES .




  1. Chyby T-SQL, úskalí a osvědčené postupy – funkce oken

  2. TSQL md5 hash se liší od C# .NET md5

  3. Vraťte číslo oddílu pro každý řádek při dotazu na tabulku oddílů na serveru SQL (T-SQL)

  4. SQL Server 2005 Použití DateAdd k přidání dne k datu