2011-12-28 11 views

Odpowiedz

33

Widok słownika danych ALL_PROCEDURES (lub USER_PROCEDURES, jeśli chcesz tylko swoje pakiety). Find out more.

select procedure_name 
from all_procedures 
where owner = 'YOU' 
and object_name = 'YOUR_PACKAGE' 

Lista procedur publicznych odsłonięte w opisie pakietu. Nie ma łatwego sposobu na odzyskanie prywatnych procedur (tj. Tych określonych tylko w treści pakietu), z wyjątkiem przetwarzania tekstu źródłowego. Oracle dostarcza PL/SCOPE, którego możemy użyć do zbierania tych informacji, ale wymaga to zmiany ustawień sesji i rekompilacji naszego kodu, więc może nie być odpowiedni we wszystkich sytuacjach. Find out more.

4

Odpowiedź z APC znajduje się na właściwej linii ale SQL podana będzie lista wyłącznie procedury posiadanych przez „ty” i jest taka sama, jak wybranie z USER_PROCEDURES ale nie może być pakiety w innym schemacie

SQL> select * from all_procedures where owner='TEST'; 

OWNER       OBJECT_NAME 
------------------------------ ------------------------------ 
PROCEDURE_NAME     AGG PIP IMPLTYPEOWNER 
------------------------------ --- --- ------------------------------ 
IMPLTYPENAME     PAR INT DET AUTHID 
------------------------------ --- --- --- ------------ 
TEST       TEST 
           NO NO 
           NO NO NO DEFINER 

SQL> select * from user_procedures; 

OBJECT_NAME     PROCEDURE_NAME     AGG PIP 
------------------------------ ------------------------------ --- --- 
IMPLTYPEOWNER     IMPLTYPENAME     PAR INT DET 
------------------------------ ------------------------------ --- --- --- 
AUTHID 
------------ 
TEST               NO NO 
                  NO NO NO 

Zauważ również, że przy udzielaniu i odwoływaniu wykonania w pakiecie, procedurze lub funkcji są one wyświetlane w tabeli DBA_TAB_PRIVS (ta sama tabela, co w przypadku wstawiania/aktualizacji/usuwania uprawnień w tabelach)

Po podaniu nazwy pakietu, takiego jak ponieważ Oracle dostarczyło te DBMS, możesz również użyć DESC, który dostarczy listę oczekiwanych parametrów i typów .sol.

SQL> desc dbms_lob 
PROCEDURE APPEND 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      BLOB     IN/OUT 
SRC_LOB      BLOB     IN 
PROCEDURE APPEND 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      CLOB     IN/OUT 
SRC_LOB      CLOB     IN 
PROCEDURE CLOSE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
PROCEDURE CLOSE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
PROCEDURE CLOSE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN/OUT 
FUNCTION COMPARE RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_1       BLOB     IN 
LOB_2       BLOB     IN 
AMOUNT       NUMBER(38)    IN  DEFAULT 
OFFSET_1      NUMBER(38)    IN  DEFAULT 
OFFSET_2      NUMBER(38)    IN  DEFAULT 
FUNCTION COMPARE RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_1       CLOB     IN 
LOB_2       CLOB     IN 
AMOUNT       NUMBER(38)    IN  DEFAULT 
OFFSET_1      NUMBER(38)    IN  DEFAULT 
OFFSET_2      NUMBER(38)    IN  DEFAULT 
FUNCTION COMPARE RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_1       BINARY FILE LOB   IN 
FILE_2       BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN 
OFFSET_1      NUMBER(38)    IN  DEFAULT 
OFFSET_2      NUMBER(38)    IN  DEFAULT 
PROCEDURE CONVERTTOBLOB 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      BLOB     IN/OUT 
SRC_CLOB      CLOB     IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN/OUT 
SRC_OFFSET      NUMBER(38)    IN/OUT 
BLOB_CSID      NUMBER     IN 
LANG_CONTEXT     NUMBER(38)    IN/OUT 
WARNING      NUMBER(38)    OUT 
PROCEDURE CONVERTTOCLOB 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      CLOB     IN/OUT 
SRC_BLOB      BLOB     IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN/OUT 
SRC_OFFSET      NUMBER(38)    IN/OUT 
BLOB_CSID      NUMBER     IN 
LANG_CONTEXT     NUMBER(38)    IN/OUT 
WARNING      NUMBER(38)    OUT 
PROCEDURE COPY 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      BLOB     IN/OUT 
SRC_LOB      BLOB     IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN  DEFAULT 
SRC_OFFSET      NUMBER(38)    IN  DEFAULT 
PROCEDURE COPY 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      CLOB     IN/OUT 
SRC_LOB      CLOB     IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN  DEFAULT 
SRC_OFFSET      NUMBER(38)    IN  DEFAULT 
PROCEDURE CREATETEMPORARY 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
CACHE       BOOLEAN     IN 
DUR       BINARY_INTEGER   IN  DEFAULT 
PROCEDURE CREATETEMPORARY 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
CACHE       BOOLEAN     IN 
DUR       BINARY_INTEGER   IN  DEFAULT 
PROCEDURE ERASE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
AMOUNT       NUMBER(38)    IN/OUT 
OFFSET       NUMBER(38)    IN  DEFAULT 
PROCEDURE ERASE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
AMOUNT       NUMBER(38)    IN/OUT 
OFFSET       NUMBER(38)    IN  DEFAULT 
PROCEDURE FILECLOSE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN/OUT 
PROCEDURE FILECLOSEALL 
FUNCTION FILEEXISTS RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
PROCEDURE FILEGETNAME 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
DIR_ALIAS      VARCHAR2    OUT 
FILENAME      VARCHAR2    OUT 
FUNCTION FILEISOPEN RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
PROCEDURE FILEOPEN 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN/OUT 
OPEN_MODE      BINARY_INTEGER   IN  DEFAULT 
PROCEDURE FREETEMPORARY 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
PROCEDURE FREETEMPORARY 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
FUNCTION GETCHUNKSIZE RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
FUNCTION GETCHUNKSIZE RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
FUNCTION GETLENGTH RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
FUNCTION GETLENGTH RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
FUNCTION GETLENGTH RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
FUNCTION GET_STORAGE_LIMIT RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
FUNCTION GET_STORAGE_LIMIT RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
FUNCTION INSTR RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
PATTERN      RAW      IN 
OFFSET       NUMBER(38)    IN  DEFAULT 
NTH       NUMBER(38)    IN  DEFAULT 
FUNCTION INSTR RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
PATTERN      VARCHAR2    IN 
OFFSET       NUMBER(38)    IN  DEFAULT 
NTH       NUMBER(38)    IN  DEFAULT 
FUNCTION INSTR RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
PATTERN      RAW      IN 
OFFSET       NUMBER(38)    IN  DEFAULT 
NTH       NUMBER(38)    IN  DEFAULT 
FUNCTION ISOPEN RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
FUNCTION ISOPEN RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
FUNCTION ISOPEN RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
FUNCTION ISTEMPORARY RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
FUNCTION ISTEMPORARY RETURNS NUMBER(38) 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
PROCEDURE LOADBLOBFROMFILE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      BLOB     IN/OUT 
SRC_BFILE      BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN/OUT 
SRC_OFFSET      NUMBER(38)    IN/OUT 
PROCEDURE LOADCLOBFROMFILE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      CLOB     IN/OUT 
SRC_BFILE      BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN/OUT 
SRC_OFFSET      NUMBER(38)    IN/OUT 
BFILE_CSID      NUMBER     IN 
LANG_CONTEXT     NUMBER(38)    IN/OUT 
WARNING      NUMBER(38)    OUT 
PROCEDURE LOADFROMFILE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      BLOB     IN/OUT 
SRC_LOB      BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN  DEFAULT 
SRC_OFFSET      NUMBER(38)    IN  DEFAULT 
PROCEDURE LOADFROMFILE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
DEST_LOB      CLOB     IN/OUT 
SRC_LOB      BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN 
DEST_OFFSET     NUMBER(38)    IN  DEFAULT 
SRC_OFFSET      NUMBER(38)    IN  DEFAULT 
PROCEDURE OPEN 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
OPEN_MODE      BINARY_INTEGER   IN 
PROCEDURE OPEN 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
OPEN_MODE      BINARY_INTEGER   IN 
PROCEDURE OPEN 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN/OUT 
OPEN_MODE      BINARY_INTEGER   IN  DEFAULT 
PROCEDURE READ 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
AMOUNT       NUMBER(38)    IN/OUT 
OFFSET       NUMBER(38)    IN 
BUFFER       RAW      OUT 
PROCEDURE READ 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
AMOUNT       NUMBER(38)    IN/OUT 
OFFSET       NUMBER(38)    IN 
BUFFER       VARCHAR2    OUT 
PROCEDURE READ 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN/OUT 
OFFSET       NUMBER(38)    IN 
BUFFER       RAW      OUT 
FUNCTION SUBSTR RETURNS RAW 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN 
AMOUNT       NUMBER(38)    IN  DEFAULT 
OFFSET       NUMBER(38)    IN  DEFAULT 
FUNCTION SUBSTR RETURNS VARCHAR2 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN 
AMOUNT       NUMBER(38)    IN  DEFAULT 
OFFSET       NUMBER(38)    IN  DEFAULT 
FUNCTION SUBSTR RETURNS RAW 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
FILE_LOC      BINARY FILE LOB   IN 
AMOUNT       NUMBER(38)    IN  DEFAULT 
OFFSET       NUMBER(38)    IN  DEFAULT 
PROCEDURE TRIM 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
NEWLEN       NUMBER(38)    IN 
PROCEDURE TRIM 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
NEWLEN       NUMBER(38)    IN 
PROCEDURE WRITE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
AMOUNT       NUMBER(38)    IN 
OFFSET       NUMBER(38)    IN 
BUFFER       RAW      IN 
PROCEDURE WRITE 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
AMOUNT       NUMBER(38)    IN 
OFFSET       NUMBER(38)    IN 
BUFFER       VARCHAR2    IN 
PROCEDURE WRITEAPPEND 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      BLOB     IN/OUT 
AMOUNT       NUMBER(38)    IN 
BUFFER       RAW      IN 
PROCEDURE WRITEAPPEND 
Argument Name     Type     In/Out Default? 
------------------------------ ----------------------- ------ -------- 
LOB_LOC      CLOB     IN/OUT 
AMOUNT       NUMBER(38)    IN 
BUFFER       VARCHAR2    IN 
6

Może być użyteczny dla kogoś, jest to sposób na poznanie procedury i funkcji podanej również na obudowie opakowania.

select name, 
     type, 
     decode(usage,'DECLARATION', 'body only', 'DEFINITION', 'spec and body', usage) defined_on, 
     line body_line 
    from user_identifiers ui 
    where type in ('PROCEDURE', 'FUNCTION') 
    and usage_context_id = (select usage_id 
    from user_identifiers 
     where object_name = ui.object_name 
     and object_type = ui.object_type 
     and usage_context_id = 0) 
    and object_name = 'your package name' 
    and object_type = 'PACKAGE BODY' 
    order by name 
+0

To jest właściwa odpowiedź! Przetestowano OK na 12c, ale widok USER_IDENTIFIERS istnieje od co najmniej 11g. –

+0

Domyślnie ten widok jest pusty. Jest wypełniany przez PL/SCOPE, co wymaga od nas rekompilacji naszego kodu za pomocą specjalnych ustawień. [Dowiedz się więcej] (https://stackoverflow.com/q/44026333/146325) – APC

0

Używam tego:

swój pakiet:

SELECT * 
FROM ALL_OBJECTS 
WHERE OBJECT_TYPE = 'PACKAGE' 
    and owner = 'owner_name' 
    and object_name = 'package_name' 

swoich procedur (tylko od specyfikacji, czyli globalne):

select * 
from all_procedures 
where owner = 'owner_name' 
and object_name = 'package_name' 

oraz w/out argumentów procedura:

select * 
from ALL_ARGUMENTS 
where owner = 'owner_name' 
    and package_name = 'package_name' 
    and object_name = 'procedure_name' 

Ciesz się!

Powiązane problemy