Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Widok ALL_PROCEDURES nie pokazuje PROCEDURE_NAME

Z dokumentacji,

ALL_PROCEDURES wyświetla listę wszystkich funkcji i procedur wraz z powiązanymi właściwościami. Na przykład ALL_PROCEDURES wskazuje, czy funkcja jest potokowa, włączona równoległa czy funkcja agregująca. Jeśli funkcja jest funkcją potokową lub funkcją agregującą, identyfikowany jest również powiązany typ implementacji (jeśli istnieje).

Nie wyjaśnia, czy wymieniłby PROCEDURĘ SAMODZIELNĄ i procedura opakowana w PAKIET w ten sam sposób, czy też traktuje to inaczej. Ponieważ procedure_name nie wymieniłby nazwy samodzielnej procedury, jak widać w przypadku testowym w powyższym pytaniu.

PROCEDURE_NAME kolumna będzie miała tylko nazwę procedury dla procedur, które są częścią PACKAGE . W przypadku PROCEDUR SAMODZIELNYCH musisz użyć 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>

Możesz uzyskać listę procedur używając procedury nazwa_procedury tylko wtedy, gdy jest ona opakowana w pakiet.

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>

Teraz możesz zobaczyć nazwę_procedury jako właściwą procedurę, a nazwa_obiektu jako nazwę_pakietu.

Oczywiście najczęściej w systemach produkcyjnych mielibyśmy pakiety, a nie samodzielne procedury. Ale podczas testów i wersji demonstracyjnych kompilujemy i uruchamiamy samodzielne procedury. Dlatego dobrze jest wiedzieć, w jaki sposób Oracle przechowuje informacje w widokach *_PROCEDURES .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień port Oracle z portu 8080

  2. Jaka jest maksymalna długość nazwy tabeli w Oracle?

  3. Kroki synchronizacji trybu gotowości z podstawową bazą danych w Oracle

  4. Jaki jest odpowiednik varchar(max) w Oracle?

  5. Jak uzyskać nazwę miesiąca z daty w Oracle?