programing

전체 저장 프로시저 코드를 표시하는 방법은 무엇입니까?

magicmemo 2023. 5. 21. 11:18
반응형

전체 저장 프로시저 코드를 표시하는 방법은 무엇입니까?

저장 프로시저/기능을 어떻게 보십니까?

원래 정의가 없는 오래된 기능이 있다고 가정해 보십시오. pg/psql에서 무엇을 하는지 보고 싶지만 방법을 찾을 수가 없습니다.

Postgres 버전 8.4.1 사용

\df+ <function_name>psql 단위로.

\ef <function_name>psql 단위로.편집 가능한 텍스트로 전체 기능을 제공합니다.

SELECT prosrc FROM pg_proc WHERE proname = 'function_name';

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

pgAdmin을 사용하거나 pg_proc를 사용하여 저장 프로시저의 원본을 가져옵니다. pgAdmin도 마찬가지입니다.

사용하다\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>'

포스트그레 이후SQL 9.1 \sf사용할 수 있습니다.

\sf function_name

(마지막에 세미콜론을 넣지 않음)

SELECT pg_get_functiondef(( SELECT oid 
                            FROM   pg_proc
                            WHERE  proname = 'function_name' ));

시스템에 구성되어 있는 경우 phpPgAdmin으로도 얻을 수 있습니다.

1단계: 데이터베이스 선택

2단계: 찾기 버튼 클릭

3단계: 검색 옵션을 기능으로 변경한 후 찾기를 클릭합니다.

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

pg_get_functiondef() 명령을 사용하여 proc의 전체 함수 코드를 가져올 수 있습니다.또한 아래 코드를 사용하여 매크로를 생성하면 함수 코드를 얻기 위한 바로 가기 키로 사용할 수 있습니다.이 방법을 사용하여 전체 postgresql 기금 코드를 표시합니다.

DO
$$
DECLARE 
        v_Inputtext TEXT;
        v_output    text;
BEGIN
       v_Inputtext  := (SELECT lower('procedurename'));
       v_output     := (SELECT pg_get_functiondef(oid) FROM pg_catalog.pg_proc WHERE proname = v_Inputtext);
       RAISE NOTICE '%',v_output;
END;
$$

https://www.novicetechie.com/2020/01/how-to-display-full-postgresql-function.html

jdbcTemplate.queryForList("SELECT routine_name FROM information_schema.routines WHERE routine_type = 'PROCEDURE'", String.class);

일반적으로 pgAdmin과 같은 DB 관리자 응용프로그램을 사용하고 관심 있는 개체를 찾은 다음 마우스 오른쪽 단추를 눌러 "만들 때 스크립팅" 또는 유사한 작업을 수행합니다.

이런 짓을 하려는 겁니까?관리 앱 없이?

언급URL : https://stackoverflow.com/questions/3524859/how-to-display-full-stored-procedure-code

반응형