जवाबों:
\df+
में psql आप sourcecode देता है।
\df
अपने फ़ंक्शन का नाम, फिर \x
विस्तारित आउटपुट के लिए उपयोग कर सकते हैं,\df+ name_of_function
\df ltxtquery
।
\x ON
ट्रांसपोज़्ड डिस्प्ले के लिए जरूरी है
समारोह के लिए:
आप निम्न के रूप में pg_proc दृश्य को क्वेरी कर सकते हैं
select proname,prosrc from pg_proc where proname= your_function_name;
दूसरा तरीका यह है कि बस कमोंट को निष्पादित करें \df
और \ef
जो कार्यों को सूचीबद्ध कर सकता है।
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
यह फ़ंक्शन का स्रोत कोड दिखाएगा।
ट्रिगर के लिए:
मुझे पता नहीं है कि क्या स्रोत कोड प्राप्त करने का एक सीधा तरीका है। बस निम्न तरीके से जानते हैं, हो सकता है कि यह आपकी मदद करेगा!
skytf => pg_trigger से tgrelid चुनें जहाँ tgname = 'insert_tbl_tmp_trigger'; tgrelid --------- 26,599 (1 पंक्ति)
skytf => oid चुनें, pg_class से relname जहां oid = 26599; Oid | relname ------- + ----------------------------- 26599 | tbl_tmp (1 पंक्ति)
skytf => \ d tbl_tmp
यह आपको तालिका के ट्रिगर का विवरण दिखाएगा। आमतौर पर एक ट्रिगर एक फ़ंक्शन का उपयोग करता है। तो आप उपर्युक्त के रूप में ट्रिगर फ़ंक्शन का स्रोत कोड प्राप्त कर सकते हैं जो मैंने बताया है!
यहाँ PostgreSQL-9.5 से कुछ उदाहरण दिए गए हैं
प्रदर्शन सूची:
\df+
\dy+
प्रदर्शन परिभाषा:
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$
\x
विस्तारित प्रदर्शन को चालू करने के लिए पहले उपयोग करना भी पठनीयता के साथ मदद करता है।
बहुत संभावनाएं हैं। सबसे आसान तरीका है कि आप बस pgAdmin का उपयोग करें और इसे SQL विंडो से प्राप्त करें। हालांकि आप प्रोग्राम तो examinate इस प्राप्त करना चाहते हैं, तो pg_proc
और pg_trigger
प्रणाली कैटलॉग या routines
और triggers
जानकारी स्कीमा से दृश्य (के मानक तरीका SQL कि, लेकिन यह सब सुविधाओं विशेष रूप से PostgreSQL विशेष कवर नहीं हो सकता है)। उदाहरण के लिए:
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
SELECT view_definition FROM information_schema.views WHERE table_schema = ? AND table_name = ?
pgproc.prosrc
स्तंभ देखें
फंक्शन को प्रदर्शित करने की तुलना में थोड़ा अधिक, एड-इन सुविधा के रूप में अच्छी तरह से कैसे प्राप्त करें।
\ef <function_name>
बहुत काम है। यह संपादन योग्य प्रारूप में फ़ंक्शन का स्रोत कोड खोलेगा। आप न केवल इसे देख पाएंगे, आप इसे संपादित और निष्पादित भी कर सकते हैं।
केवल \ef
function_name के बिना संपादन योग्य खुल जाएगा टेम्पलेट टेम्पलेट।
अधिक संदर्भ के लिए -> https://www.postgresql.org/docs/9.6/static/app-psql.html
\sf
function_name psql में एकल फ़ंक्शन के संपादन योग्य स्रोत कोड प्राप्त करता है।
से https://www.postgresql.org/docs/9.6/static/app-psql.html :
\ sf [+] function_description यह आदेश एक क्रिएट या रिपलेंश फंक्शन कमांड के रूप में नामांकित फ़ंक्शन की परिभाषा को दिखाता है और दिखाता है।
यदि + को कमांड नाम से जोड़ा जाता है, तो आउटपुट लाइनों को क्रमबद्ध किया जाता है, जिसमें फ़ंक्शन बॉडी की पहली पंक्ति लाइन 1 होती है।
इसके अतिरिक्त @ फ्रैंक के जवाब में आप इसे sql इंटरफ़ेस से उपयोग कर सकते हैं:
select
prosrc
from pg_trigger, pg_proc
where
pg_proc.oid=pg_trigger.tgfoid
and pg_trigger.tgname like '<name>'
(यहां से लिया गया: http://www.postgresql.org/message-id/Pine.BSF.4.10.10009140858080.28013-100000@megazone23.bigpanda.com )
चूंकि संस्करण: psql (9.6.17, सर्वर 11.6)
मैंने उपरोक्त सभी उत्तर देने की कोशिश की है लेकिन मेरे लिए
postgres=> \sf jsonb_extract_path_text
CREATE OR REPLACE FUNCTION pg_catalog.jsonb_extract_path_text(from_json jsonb, VARIADIC path_elems text[])
RETURNS text
LANGUAGE internal
IMMUTABLE PARALLEL SAFE STRICT
AS $function$jsonb_extract_path_text$function$
postgres=> \df+
ERROR: column p.proisagg does not exist
LINE 6: WHEN p.proisagg THEN 'agg'
^
HINT: Perhaps you meant to reference the column "p.prolang".
डीएफ मेरे लिए काम नहीं कर रहा है।
select * from pg_trigger;
या, यदि आप यह भी देखना चाहते हैं कि प्रत्येक ट्रिगरselect tgrelid::regclass, tgname from pg_trigger;
FWIW पर किस तालिका में लागू होता है