Dưới đây là ba tùy chọn để liệt kê tất cả các quy trình được lưu trữ trong cơ sở dữ liệu Postgres.
information_schema.routines
Xem
Dạng xem này chứa tất cả các hàm và thủ tục trong cơ sở dữ liệu hiện tại mà người dùng hiện tại có quyền truy cập (bằng cách là chủ sở hữu hoặc có một số đặc quyền).
Dưới đây là một ví dụ về việc trả về danh sách các thủ tục đã lưu trữ:
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
Vui lòng bao gồm nhiều cột hơn nếu được yêu cầu. Bạn có thể xem định nghĩa của thủ tục bằng routine_definition
cột.
pg_proc
Danh mục
pg_catalog.pg_proc
danh mục lưu trữ thông tin về các hàm, thủ tục, hàm tổng hợp và các hàm cửa sổ.
Chúng ta có thể tham gia điều này bằng pg_catalog.pg_namespace
danh mục để lọc kết quả thành chỉ các thủ tục có public
không gian tên:
SELECT
n.nspname,
p.proname
FROM
pg_catalog.pg_namespace n
JOIN
pg_catalog.pg_proc p ON
p.pronamespace = n.oid
WHERE
p.prokind = 'p'
AND
n.nspname = 'public';
Chúng tôi đã lọc thành một prokind
trong tổng số p
để giới hạn kết quả đối với các thủ tục được lưu trữ.
Các giá trị có thể là f
cho một chức năng bình thường, p
cho một thủ tục, a
cho một hàm tổng hợp, hoặc w
cho một chức năng cửa sổ.
Bạn có thể thêm p.prosrc
để có được định nghĩa của thủ tục. Hoặc bạn có thể vượt qua p.oid
vào cột pg_get_functiondef()
hàm số. Hàm này sẽ tạo ra một CREATE OR REPLACE PROCEDURE
câu lệnh cho thủ tục được lưu trữ.
\df
Lệnh
Khi sử dụng psql, chúng ta có thể sử dụng \df
lệnh:
\df
Theo mặc định, điều này chỉ trả về các đối tượng do người dùng tạo. Ngoài ra, bạn có thể cung cấp một mẫu hoặc S
sửa đổi để bao gồm các đối tượng hệ thống.
Dưới đây là một ví dụ về việc cung cấp một mẫu:
\df *album*
Ví dụ đó thu hẹp kết quả chỉ thành các hàm / thủ tục đó với văn bản album
nhân danh họ.
Lưu ý rằng lệnh này cũng trả về các hàm. Loại quy trình (ví dụ:func
, proc
) được liệt kê trong một loại type
trong đầu ra.