Làm thế nào để in chức năng và kích hoạt mã nguồn trong postgresql? xin vui lòng cho tôi biết nếu có ai biết truy vấn để hiển thị chức năng, kích hoạt mã nguồn.Làm thế nào để hiển thị hàm, thủ tục, kích hoạt mã nguồn trong postgresql?
Trả lời
Có nhiều khả năng. Cách đơn giản nhất là chỉ cần sử dụng pgAdmin và nhận được điều này từ cửa sổ SQL. Tuy nhiên nếu bạn muốn có được điều này theo chương trình sau đó kiểm tra pg_proc
và pg_trigger
danh mục hệ thống hoặc routines
và triggers
lượt xem từ lược đồ thông tin (đó là cách tiêu chuẩn SQL, nhưng nó có thể không bao gồm tất cả các tính năng đặc biệt là PostgreSQL). Ví dụ:
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
Mmmm .. Tôi có các hàm PGPSQL, có một routine_defintion rỗng, và trạng thái 'EXTERNAL' trong trường routine_body. Bất kỳ gợi ý nơi tôi có thể tìm thấy những? – alfonx
+1 Đây là giải pháp tiêu chuẩn/di động hơn. Đối với các khung nhìn, SQL là: 'SELECT view_definition FROM information_schema.views WHERE table_schema =? Và table_name =? ' – Franta
Nhưng những gì về trường hợp một tên chức năng không phải là duy nhất bởi vì ai đó đã thực hiện chức năng với cùng tên và đối số chức năng khác nhau? https://stackoverflow.com/questions/47341513/postgresql-how-to-display-function-or-trigger-or-view-code-for-a-unique-item – mg1075
cho chức năng:
bạn có thể truy vấn xem pg_proc, chỉ cần như sau
select proname,prosrc from pg_proc where proname= your_function_name;
Một cách khác là chỉ thực hiện commont \df
và \ef
mà có thể liệt kê các hàm.
skytf=> \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+----------------------+------------------+------------------------------------------------+--------
public | pg_buffercache_pages | SETOF record | | normal
skytf=> \ef pg_buffercache_pages
Nó sẽ hiển thị mã nguồn của hàm.
Đối với trigger:
Tôi dont't biết nếu có một cách trực tiếp để lấy mã nguồn. Chỉ cần biết cách sau, có thể nó sẽ giúp bạn!
- bước 1: Lấy oid bảng của cò:
skytf=> select tgrelid from pg_trigger where tgname='insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1 row)
- bước 2: Lấy tên bảng của oid trên!
skytf=> select oid,relname from pg_class where oid=26599; oid | relname -------+----------------------------- 26599 | tbl_tmp (1 row)
- bước 3: liệt kê các thông tin bảng
skytf=> \d tbl_tmp
Nó sẽ cho bạn thấy các chi tiết của cò của bảng. Thông thường một trigger sử dụng một hàm. Vì vậy, bạn có thể lấy mã nguồn của hàm kích hoạt giống như ở trên mà tôi đã chỉ ra!
Cách xem ** chức năng của cài đặt EXTENSION? ** Ví dụ tôi đang sử dụng [ltree] (https://www.postgresql.org/docs/current/static/ltree.html), nhưng không có phản hồi với '\ df ltxtquery'. –
\df+
trong psql cung cấp cho bạn mã nguồn.
Đẹp nhất :) Tôi đề nghị sử dụng '\ df' để tìm tên hàm của bạn, sau đó' \ x' cho đầu ra mở rộng, sau đó '\ df + name_of_function' –
\ df + xuất nhiều hơn mã. Nếu tất cả những gì bạn muốn là mã, \ sf sẽ thực hiện thủ thuật! – Telic
Cách xem ** các chức năng của EXTENSION đã cài đặt? ** Ví dụ Tôi đang sử dụng [ltree] (https://www.postgresql.org/docs/current/static/ltree.html), nhưng không có phản hồi với ' \ df ltxtquery'. –
thêm cho câu trả lời @ franc của bạn có thể sử dụng từ giao diện sql:
select
prosrc
from pg_trigger, pg_proc
where
pg_proc.oid=pg_trigger.tgfoid
and pg_trigger.tgname like '<name>'
(lấy từ đây: http://www.postgresql.org/message-id/[email protected]m)
Dưới đây là vài ví dụ từ PostgreSQL-9.5
danh sách hiển thị:
- Chức năng:
\df+
- Triggers:
\dy+
Display Định nghĩa:
postgres=# \sf
function name is required
postgres=# \sf pg_reload_conf()
CREATE OR REPLACE FUNCTION pg_catalog.pg_reload_conf()
RETURNS boolean
LANGUAGE internal
STRICT
AS $function$pg_reload_conf$function$
postgres=# \sf pg_encoding_to_char
CREATE OR REPLACE FUNCTION pg_catalog.pg_encoding_to_char(integer)
RETURNS name
LANGUAGE internal
STABLE STRICT
AS $function$PG_encoding_to_char$function$
\sf
function_name trong psql mang lại mã nguồn có thể chỉnh sửa của một hàm duy nhất.
Từ https://www.postgresql.org/docs/9.6/static/app-psql.html:
\ sf [+] function_description này lệnh fetches và hiển thị định nghĩa của hàm có tên, dưới hình thức của một CREATE OR REPLACE lệnh CHỨC NĂNG.
Nếu + được nối vào tên lệnh, sau đó các dòng sản lượng được đánh số, với dòng đầu tiên của các cơ quan chức năng là dòng 1.
Hơi nhiều hơn chỉ hiển thị các chức năng, như thế nào về nhận được cũng chỉnh sửa tại chỗ.
\ef <function_name>
rất tiện dụng. Nó sẽ mở mã nguồn của hàm ở định dạng có thể chỉnh sửa. Bạn sẽ không chỉ có thể xem nó, bạn có thể chỉnh sửa và thực thi nó.
Chỉ \ef
không có function_name sẽ mở mẫu CREATE FUNCTION có thể chỉnh sửa.
Để tham khảo thêm ->https://www.postgresql.org/docs/9.6/static/app-psql.html
- 1. Hiển thị thủ tục/mã chức năng trong MySql
- 2. Làm thế nào tôi có thể lấy tên bảng trong một hàm kích hoạt PostgreSQL?
- 3. Làm thế nào để TẠO THỦ TỤC trong H2
- 4. Mã nguồn cho thủ tục hoặc hàm được lưu trữ cụ thể
- 5. Làm thế nào để lưu một thủ tục lưu trữ?
- 6. WordPress: Làm thế nào để hiển thị thông báo trong bảng quản trị, kích hoạt Plugin?
- 7. làm thế nào để kích hoạt "hiển thị Touch On nổi bật" trong iphone?
- 8. Làm thế nào để tìm một văn bản bên trong thủ tục/trình kích hoạt SQL Server?
- 9. Làm thế nào để gọi thủ tục lưu sẵn từ một thủ tục lưu sẵn khác?
- 10. Làm cách nào để xóa một thủ tục được lưu trữ trong postgresql?
- 11. Lỗi kích hoạt/thực hiện thủ tục MySQL
- 12. Ngôn ngữ nào bạn sử dụng cho trình kích hoạt và thủ tục lưu trữ của PostgreSQL?
- 13. Làm thế nào để liên tục hiển thị đầu ra Python trong một trang web?
- 14. Làm thế nào để hiển thị mã nguồn cho chức năng được tạo động ("tùy chỉnh") trong IPython?
- 15. Cú pháp thích hợp cho các thủ tục lưu trữ (các hàm) của PostgreSQL là gì?
- 16. Làm thế nào để cấu hình các thủ tục plpgsql
- 17. Làm thế nào để chèn dữ liệu vào bảng sử dụng thủ tục lưu trữ trong postgresql
- 18. Làm thế nào để kích hoạt ng-thay đổi trong kiểm tra chỉ thị trong AngularJS
- 19. Làm thế nào để kích hoạt/hủy kích hoạt virtualenv khỏi mã python?
- 20. Làm thế nào để sử dụng một giá trị từ một thủ tục lưu sẵn trong một thủ tục khác?
- 21. Hiển thị mã nguồn C/C++?
- 22. Làm thế nào để mã hóa các cột trong postgresql?
- 23. Làm thế nào tôi có thể hiển thị kế hoạch thực hiện cho một thủ tục lưu sẵn?
- 24. objdump quản lý để hiển thị mã nguồn bằng tùy chọn -S như thế nào?
- 25. Làm thế nào để gọi Thủ tục lưu trữ (với 2 tham số) trong một thủ tục lưu trữ?
- 26. Làm thế nào để kích hoạt mod_rewrite?
- 27. Làm thế nào để kích hoạt cửa sổ trong Java?
- 28. làm thế nào để printf trong thủ tục lưu trữ oracle (cho mục đích gỡ lỗi)?
- 29. gỡ lỗi kích hoạt postgresql
- 30. Thủ tục cấp phép thị trường Android
như một lưu ý cho tín đồ người đã ở đây cố gắng tìm ra cách để liệt kê tất cả gây nên, đó là 'select * from pg_trigger; 'hoặc, nếu bạn cũng muốn xem bảng mỗi trigger áp dụng cho 'select tgrelid :: regclass, tgname từ pg_trigger;' FWIW ' – rogerdpack