2011-12-28 39 views

Trả lời

33

Chế độ xem từ điển dữ liệu ALL_PROCEDURES (hoặc USER_PROCEDURES nếu bạn chỉ muốn gói của mình). Find out more.

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

này liệt kê các thủ tục nào tiếp xúc trong đặc tả gói. Không có cách nào dễ dàng để lấy các thủ tục riêng tư (có nghĩa là, các quy trình được chỉ định trong thân gói) ngoại trừ bằng cách xử lý văn bản nguồn. Oracle cung cấp một tiện ích PL/SCOPE mà chúng ta có thể sử dụng để thu thập thông tin này, nhưng nó đòi hỏi chúng ta thay đổi các thiết lập phiên và biên dịch lại mã của chúng ta, vì vậy nó có thể không phù hợp trong mọi tình huống. Find out more.

4

Câu trả lời từ APC là trên dòng chính xác nhưng SQL cụ thể sẽ chỉ liệt kê các thủ tục thuộc sở hữu của 'BẠN' và cũng giống như cách chọn từ USER_PROCEDURES nhưng có thể gói trong schema khác

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 

Cũng lưu ý rằng khi bạn cấp và thu hồi thực thi trên một gói, thủ tục hoặc chức năng, chúng hiển thị trong bảng DBA_TAB_PRIVS (cùng một bảng như các đặc quyền chèn/cập nhật/xóa trên bảng)

Khi bạn đặt tên gói khi Oracle cung cấp DBMS, bạn cũng có thể sử dụng DESC để cung cấp danh sách các tham số và kiểu dự kiến .g.

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

Có thể hữu ích cho ai đó, đây cũng là cách để tìm hiểu quy trình và chức năng được chỉ định trên thân gói.

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

Đây là câu trả lời đúng! Đã kiểm tra OK trên 12c nhưng chế độ xem USER_IDENTIFIERS tồn tại từ ít nhất 11g. –

+0

Theo mặc định, chế độ xem này trống. Nó được điền bởi PL/SCOPE, yêu cầu chúng tôi biên dịch lại mã của chúng tôi với các cài đặt đặc biệt. [Tìm hiểu thêm] (https://stackoverflow.com/q/44026333/146325) – APC

0

tôi sử dụng cái này:

gói của bạn:

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

thủ tục của bạn (chỉ từ thông số kỹ thuật, tức là toàn cầu):

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

và trong đối số/out từ thủ tục:

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

tận hưởng!

Các vấn đề liên quan