[postgresql] 전체 저장 프로 시저 코드를 표시하는 방법은 무엇입니까?
저장 프로 시저 / 함수를 어떻게 봅니까?
원래 정의가없는 오래된 함수가 있다고 가정 해 보겠습니다. pg / psql에서 무엇을하는지보고 싶지만 그 방법을 알아낼 수없는 것 같습니다.
Postgres 버전 8.4.1 사용
답변
pgAdmin을 사용하거나 pg_proc 을 사용 하여 저장 프로 시저의 소스를 가져옵니다. pgAdmin은 동일합니다.
답변
\df+ <function_name>
에서 psql의 .
답변
\ef <function_name>
psql에서. 편집 가능한 텍스트로 전체 기능을 제공합니다.
답변
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
이것은 함수 핸들러에게 함수를 호출하는 방법을 알려줍니다. 구현 언어 / 호출 규칙에 따라 해석 된 언어, 링크 기호, 파일 이름 또는 기타 거의 모든 기능에 대한 함수의 실제 소스 코드 일 수 있습니다.
답변
\df
Postgres의 모든 저장 프로 시저를 나열하는 데 사용 합니다.
답변
카탈로그 테이블을 빠르게 쿼리하고 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>'
답변
시스템에서 구성한 경우 phpPgAdmin으로 얻을 수도 있습니다.
1 단계 : 데이터베이스 선택
2 단계 : 찾기 버튼 클릭
3 단계 : 검색 옵션을 기능으로 변경 한 다음 찾기를 클릭합니다.
정의 된 함수 목록이 표시되며 이름으로 함수를 검색 할 수도 있습니다.이 답변이 다른 사용자에게 도움이되기를 바랍니다.