2009-06-05 26 views

Trả lời

23

Quan điểm DBA_OBJECTS sẽ liệt kê các thủ tục (cũng như hầu như bất kỳ đối tượng nào khác):

SELECT owner, object_name 
FROM dba_objects 
WHERE object_type = 'PROCEDURE' 

DBA_SOURCE view sẽ liệt kê các dòng mã nguồn cho một thủ tục trong câu hỏi:

SELECT line, text 
FROM dba_source 
WHERE owner = ? 
    AND name = ? 
    AND type = 'PROCEDURE' 
ORDER BY line 

Lưu ý: Tùy thuộc vào quyền của bạn, bạn có thể không có khả năng truy vấn DBA_OBJECTSDBA_SOURCE quan điểm. Trong trường hợp này, bạn có thể sử dụng ALL_OBJECTSALL_SOURCE để thay thế. Chế độ xem DBA_ chứa tất cả đối tượng trong cơ sở dữ liệu, trong khi chế độ xem ALL_ chỉ chứa các đối tượng mà bạn có thể truy cập.

+1

Bạn muốn làm object_type trong ('PROCEDURE', 'FUNCTION', 'PACKAGE') để nhận tất cả mã nguồn có thể. –

+0

Xin lỗi, tổng số Oracle noob ở đây. Tôi dường như không thể thấy chế độ xem/bảng đó. Điều đó có nghĩa là tôi đã đăng nhập với tư cách là người dùng sai? –

+0

Bạn có thể không có các đặc quyền cần thiết để truy vấn các chế độ xem đó. Bạn có thể thử ALL_OBJECTS và ALL_SOURCE để thay thế. –

0

Nếu bạn muốn để có được tất cả các cuộc gọi đến nội quan thủ tục lưu trữ (thông số, vv), bạn có thể kéo nó ra khỏi gói mã nguồn mở này:

http://code.google.com/p/orapig

OraPIG là Oracle Python Interface Generator. Nó introspects oracle gói và tạo ra wrappers python cho họ.

0

Tôi nghĩ rằng liệt kê từ DBA_OBJECTS có thể đã bỏ lỡ rất nhiều thủ tục: (Tôi đang trên Oracle 12c, đăng nhập như SYS)

select count(*) from dba_objects where object_type = 'PROCEDURE'; 
     202 

Nó thực sự nhìn không thể là toàn bộ cơ sở dữ liệu ORACLE có thể chỉ có 202 thủ tục.

Và truy vấn từ DBA_PROCEDURES:

select owner||'-'||object_name || '-'||procedure_name from 
dba_procedures WHERE PROCEDURE_NAME IS NOT NULL; 

26539 rows selected. 

Bây giờ tập trung vào schema SYS, mà đi kèm mặc định cho tất cả các cơ sở dữ liệu (không phải chỉ có tôi):

Truy vấn trong các stored procedure ANONYMOUS (http://www.praetoriate.com/t_high_perform_calling_procedures.htm) thuộc SYS :

select owner||'-'||object_name || '-'||procedure_name from dba_procedures WHERE PROCEDURE_NAME IS NULL and owner = 'SYS'; 
994 rows selected. 

Và lưu trữ thủ tục không nặc danh SYS của có 15K:

select owner||'-'||object_name || '-'||procedure_name from dba_procedures WHERE PROCEDURE_NAME IS NOT NULL and owner = 'SYS'; 
15408 rows 
Các vấn đề liên quan