Oracle
 sql >> база данни >  >> RDS >> Oracle

Изгледът ALL_PROCEDURES не показва PROCEDURE_NAME

От документация,

ALL_PROCEDURES изброява всички функции и процедури, заедно със свързаните свойства. Например ALL_PROCEDURES показва дали дадена функция е конвейерна, паралелно разрешена или агрегатна функция. Ако дадена функция е конвейерна или обобщена функция, асоциираният тип изпълнение (ако има такъв) също се идентифицира.

Не се изяснява дали ще изброява САМОСТОЯТЕЛНА ПРОЦЕДУРА и процедура, опакована в ОПАКОВКА по същия начин или го разглежда по различен начин. Тъй като procedure_name няма да изброи името на самостоятелна процедура, както се вижда в тестовия случай във въпроса по-горе.

PROCEDURE_NAME колоната ще има само името на процедурата за процедурите, които са част от PACKAGE . За САМОТЕЖНИ ПРОЦЕДУРИ трябва да използвате 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>

Можете да получите списъка с процедури, като използвате procedure_name само ако е опакован в пакет.

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>

Сега можете да видите procedure_name като действителната процедура и object_name като package_name.

Разбира се, най-вече в производствените системи ще имаме пакети, а не самостоятелни процедури. Но докато тестваме и демонстрираме, ние компилираме и изпълняваме самостоятелни процедури. Затова е добре да знаете как Oracle поддържа информацията в *_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. Някакво въздействие върху производителността в Oracle за използване LIKE 'string' vs ='string'?

  2. Вземете стойност от FieldA, изпратете към функцията db, върнете стойността към FieldB

  3. SQL:как да използвам UNION и да поръчам по конкретен избор?

  4. Oracle :изберете максимална стойност от различни колони на същия ред

  5. Отрязване на таблица в съхранена процедура