Jak drukować funkcje i wyzwalać kod źródłowy w postgresql? proszę dać mi znać, jeśli ktoś zna zapytanie, aby wyświetlić funkcję, wyzwala kod źródłowy.Jak wyświetlić funkcję, procedurę, uruchamia kod źródłowy w postgresql?
Odpowiedz
Istnieje wiele możliwości. Najprostszym sposobem jest użycie pgAdmin i uzyskanie tego z okna SQL. Jeśli jednak chcesz uzyskać to programowo, przejrzyj katalogi systemów pg_proc
i pg_trigger
lub routines
i triggers
ze schematu informacji (jest to standardowy sposób SQL, ale może nie obejmować wszystkich funkcji, w szczególności specyficznych dla PostgreSQL). Na przykład:
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
Mmmm .. Mam funkcje PGPSQL, które mają pustą procedurę routine_defintion, i określają" EXTERNAL "w polu rutynowe_pola. Jakaś wskazówka, gdzie mogę je znaleźć? – alfonx
+1 To jest bardziej standardowe/przenośne rozwiązanie. W przypadku widoków SQL: SELECT view_definition FROM information_schema.views WHERE table_schema =? AND table_name =? ' – Franta
Ale co z przypadkiem, w którym nazwa funkcji nie jest unikalna, ponieważ ktoś stworzył funkcje o tej samej nazwie i różnych argumentach funkcji? https://stackoverflow.com/questions/47341513/postgresql-how-to-display-function- or-trigger- or-view-code-for-a-unique-item – mg1075
dla funkcji:
można wyszukać pogląd pg_proc, tak jak w poniższym
select proname,prosrc from pg_proc where proname= your_function_name;
Innym sposobem jest to, że po prostu wykonać commont \df
i \ef
które mogą wymień funkcje.
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
Wyświetli kod źródłowy funkcji.
wyzwalaczy:
I dont't wiedzieć, czy istnieje bezpośredni sposób, aby uzyskać kod źródłowy. Wystarczy znać następujący sposób, może być to pomoże!
- krok 1: Get OID tabeli wyzwalacza:
skytf=> select tgrelid from pg_trigger where tgname='insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1 row)
- krok 2: Get nazwę tabeli wyżej OID!
skytf=> select oid,relname from pg_class where oid=26599; oid | relname -------+----------------------------- 26599 | tbl_tmp (1 row)
- krok 3: notować informacje stół
skytf=> \d tbl_tmp
To pokaże Ci szczegóły spuście stołu. Zazwyczaj wyzwalacz używa funkcji. Więc możesz pobrać kod źródłowy funkcji wyzwalającej, tak jak to wyżej wskazałem!
Jak wyświetlić ** funkcje zainstalowanego EXTENSION? ** Przykład Używam [ltree] (https://www.postgresql.org/docs/current/static/ltree.html), ale nie ma odpowiedzi z '\ df ltxtquery'. –
\df+
w psql daje kod źródłowy.
Nice one :) Proponuję użyć '\ df', aby znaleźć nazwę funkcji, następnie' \ x' dla rozwiniętego wyjścia, następnie '\ df + nazwa_funkcji' –
\ df + wypisuje dużo więcej niż kod. Jeśli wszystko czego potrzebujesz to kod, \ sf zrobi to! – Telic
Jak wyświetlić ** funkcje zainstalowanego ROZSZERZENIA? ** Przykład Używam [ltree] (https://www.postgresql.org/docs/current/static/ltree.html), ale nie ma odpowiedzi z ' \ df ltxtquery'. –
dodatkowo do odpowiedzi @ franc można użyć tego z interfejsem SQL:
select
prosrc
from pg_trigger, pg_proc
where
pg_proc.oid=pg_trigger.tgfoid
and pg_trigger.tgname like '<name>'
(pobranych z tutaj: http://www.postgresql.org/message-id/[email protected]m)
Oto kilka przykładów z PostgreSQL-9.5
listy wyświetlania:
- Funkcje:
\df+
- wyzwalacze:
\dy+
Wyświetlacz Definicja:
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 w psql daje edytowalny kod źródłowy pojedynczej funkcji.
Z https://www.postgresql.org/docs/9.6/static/app-psql.html:
\ sf [+] function_description Polecenie pobierające i pokazuje definicji funkcji o nazwie, w postaci utworzyć lub zamienić funkcja rozkazu.
Jeśli + jest dołączana do nazwy poleceń, a następnie linie wyjściowe są ponumerowane, z pierwszej linii ciała funkcją jest linia 1.
Nieco więcej niż tylko wyświetlanie funkcji, jak o uzyskanie edytować również w miejscu obiektu.
\ef <function_name>
jest bardzo przydatny. Otworzy kod źródłowy funkcji w edytowalnym formacie. Nie tylko będzie można go wyświetlić, ale także można go edytować i uruchamiać.
Po prostu \ef
bez nazwa_funkcji otworzy edytowalny szablon CREATE FUNCTION.
Dla dalszego odniesienia ->https://www.postgresql.org/docs/9.6/static/app-psql.html
- 1. Jak wyświetlić kod źródłowy R (przetwarzanie wstępne)
- 2. Jak wyświetlić kod źródłowy wewnątrz pliku JAR?
- 3. Jak wyświetlić kod źródłowy funkcji pakietu w notesie IPython
- 4. Czy można wyświetlić kod źródłowy aplikacji iPhone?
- 5. Jak usunąć procedurę przechowywaną w postgresql?
- 6. Wyświetl kod źródłowy w R
- 7. Jak wyświetlić kod źródłowy funkcji R .Internal lub .Primitive?
- 8. Jak wyświetlić numery wierszy w zapytaniu PostgreSQL?
- 9. Jak tokenizować kod źródłowy Perla?
- 10. Jak automatycznie wcięcić kod źródłowy?
- 11. Jak analizować kod źródłowy Blendera
- 12. Jak pobrać kod źródłowy Eclipse?
- 13. Jak usunąć procedurę lub funkcję z pakietu
- 14. Jak wyświetlić kod funkcji .C używany przez funkcję R?
- 15. Czy klient może wyświetlić kod źródłowy PHP po stronie serwera?
- 16. Organizowanie R Kod źródłowy
- 17. Latex + kod źródłowy importu
- 18. Jak uporządkować kod źródłowy Androida w folderach
- 19. Jak debugować kod źródłowy wtyczki w Xcode?
- 20. Filtrowanie kod źródłowy w Maven
- 21. Ruby, kod źródłowy Splat?
- 22. App kod źródłowy Inventor
- 23. SyntaxHighlighter v3.0.83 kod źródłowy
- 24. Kod źródłowy biblioteki C
- 25. Kod źródłowy API Java
- 26. pokaż kod źródłowy dla funkcji w R
- 27. Pokaż procedurę/kod funkcji w MySql
- 28. T-SQL Jak uruchomić procedurę/funkcję w zapytaniu SELECT?
- 29. Jak dynamicznie wywoływać nazwaną procedurę lub funkcję w Delphi
- 30. kod źródłowy podzielony python na wiele plików?
jako uwaga dla zwolenników, którzy dostali tu próbuje dowiedzieć się, w jaki sposób wymienić wszystkich wyzwalaczy, to 'select * from pg_trigger;' lub, jeśli chcesz zobaczyć, która tabela każdy wyzwalacz stosuje się do 'select tgrelid :: regclass, tgname z pg_trigger;' FWIW ' – rogerdpack