Câu trả lời:
sử dụng pgAdmin hoặc sử dụng pg_proc để lấy nguồn của các thủ tục được lưu trữ của bạn. pgAdmin cũng làm như vậy.
\df+ <function_name>
trong psql .
\x
lệnh meta psql trước khi hiển thị định nghĩa hàm. \x
cũng hữu ích để xem kết quả truy vấn chứa các bản ghi có chuỗi dài.
\ef <function_name>
trong psql. Nó sẽ cung cấp cho toàn bộ chức năng với văn bản có thể chỉnh sửa.
;
<enter>
sau để thực thi bộ đệm.
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Điều này cho trình xử lý hàm biết cách gọi hàm. Nó có thể là mã nguồn thực của hàm cho các ngôn ngữ được thông dịch, ký hiệu liên kết, tên tệp hoặc bất kỳ thứ gì khác, tùy thuộc vào ngôn ngữ triển khai / quy ước gọi
psql
. Lưu ý rằng tên chức năng dường như bị giảm bớt.
SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. Điều này ít nhất là trên trang 9.6. Bạn có thể lấy mã số của loại thông qua thuộc tính proargtypes
, nhưng bạn cần kết hợp với một số bảng khác để lấy mã này làm tên.
Sử dụng \df
để liệt kê tất cả các thủ tục được lưu trữ trong Postgres.
Nếu có ai thắc mắc về cách truy vấn nhanh các bảng danh mục và sử dụng pg_get_functiondef()
chức năng thì đây là truy vấn mẫu:
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
pg_get_functiondef(p.oid) ilike '%indicator_loss%'
Bạn cũng có thể lấy bằng phpPgAdmin nếu bạn đã định cấu hình nó trong hệ thống của mình,
Bước 1: Chọn cơ sở dữ liệu của bạn
Bước 2: Bấm vào nút tìm
Bước 3: Thay đổi tùy chọn tìm kiếm thành các chức năng sau đó nhấp vào Tìm.
Bạn sẽ nhận được danh sách các chức năng đã định nghĩa, bạn cũng có thể tìm kiếm các chức năng theo tên, hy vọng câu trả lời này sẽ giúp ích cho những người khác.
Để xem toàn bộ mã (truy vấn) được viết trong thủ tục / hàm được lưu trữ, hãy sử dụng Lệnh bên dưới:
sp_helptext procedure/function_name
đối với tên hàm và tên thủ tục không thêm tiền tố 'dbo.' hoặc 'sys.'.
không thêm dấu ngoặc vào cuối thủ tục hoặc tên hàm và cũng không chuyển các tham số.
sử dụng từ khóa sp_helptext và sau đó chỉ cần chuyển tên thủ tục / hàm.
sử dụng lệnh dưới đây để xem toàn bộ mã được viết cho Thủ tục:
sp_helptext ProcedureName
sử dụng lệnh dưới đây để xem toàn bộ mã được viết cho hàm:
sp_helptext FunctionName
sp_helptext
trong postgresql.
Nói một cách thông thường, bạn sẽ sử dụng ứng dụng trình quản lý DB như pgAdmin , duyệt đến đối tượng mà bạn quan tâm và nhấp chuột phải vào "script as create" hoặc tương tự.
Bạn đang cố gắng làm điều này ... mà không cần ứng dụng quản lý?