답변:
pgAdmin을 사용하거나 pg_proc 을 사용 하여 저장 프로 시저의 소스를 가져옵니다. pgAdmin은 동일합니다.
\df+ <function_name>
에서 psql의 .
\ef <function_name>
psql에서. 편집 가능한 텍스트로 전체 기능을 제공합니다.
;
<enter>
버퍼를 실행 한 후에 입력하는 것을 잊지 마십시오 .
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
이것은 함수 핸들러에게 함수를 호출하는 방법을 알려줍니다. 구현 언어 / 호출 규칙에 따라 해석 된 언어, 링크 기호, 파일 이름 또는 기타 거의 모든 기능에 대한 함수의 실제 소스 코드 일 수 있습니다.
psql
. 함수 이름은 다운 케이스로 표시됩니다.
SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. 이것은 적어도 Pg 9.6에서. property를 통해 유형의 숫자 코드를 얻을 수 proargtypes
있지만이를 이름으로 가져 오려면 다른 테이블과 조인해야합니다.
카탈로그 테이블을 빠르게 쿼리하고 pg_get_functiondef()
함수를 사용하는 방법이 궁금하다면 다음 은 샘플 쿼리입니다.
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%'
시스템에서 구성한 경우 phpPgAdmin으로 얻을 수도 있습니다.
1 단계 : 데이터베이스 선택
2 단계 : 찾기 버튼 클릭
3 단계 : 검색 옵션을 기능으로 변경 한 다음 찾기를 클릭합니다.
정의 된 함수 목록이 표시되며 이름으로 함수를 검색 할 수도 있습니다.이 답변이 다른 사용자에게 도움이되기를 바랍니다.
저장 프로 시저 / 함수로 작성된 전체 코드 (쿼리)를 보려면 아래 명령을 사용하십시오.
sp_helptext procedure/function_name
함수 이름과 프로 시저 이름에 접두사 'dbo'를 추가하지 마십시오. 또는 'sys.'.
프로 시저 또는 함수 이름 끝에 대괄호를 추가하지 말고 매개 변수도 전달하지 마십시오.
sp_helptext 키워드를 사용하고 프로 시저 / 함수 이름을 전달하십시오.
절차에 대해 작성된 전체 코드를 보려면 아래 명령을 사용하십시오.
sp_helptext ProcedureName
기능을 위해 작성된 전체 코드를 보려면 아래 명령을 사용하십시오.
sp_helptext FunctionName
sp_helptext
postgresql 에는 없습니다 .
일반적으로 pgAdmin 과 같은 DB 관리자 응용 프로그램을 사용 하고 관심있는 객체를 찾은 다음 마우스 오른쪽 버튼을 클릭하여 "생성시 스크립트"또는 이와 유사한 방식으로 작성합니다.
관리 앱없이이 작업을 수행하려고합니까?