[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';

이것은 함수 핸들러에게 함수를 호출하는 방법을 알려줍니다. 구현 언어 / 호출 규칙에 따라 해석 된 언어, 링크 기호, 파일 이름 또는 기타 거의 모든 기능에 대한 함수의 실제 소스 코드 일 수 있습니다.


답변

\dfPostgres의 모든 저장 프로 시저를 나열하는 데 사용 합니다.


답변

카탈로그 테이블을 빠르게 쿼리하고 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 단계 : 검색 옵션을 기능으로 변경 한 다음 찾기를 클릭합니다.

정의 된 함수 목록이 표시되며 이름으로 함수를 검색 할 수도 있습니다.이 답변이 다른 사용자에게 도움이되기를 바랍니다.