전체 저장 프로시저 코드를 표시하는 방법은 무엇입니까?
저장 프로시저/기능을 어떻게 보십니까?
원래 정의가 없는 오래된 기능이 있다고 가정해 보십시오. 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
'programing' 카테고리의 다른 글
정적 속성에 바인딩 (0) | 2023.05.21 |
---|---|
파일을 만들 디렉터리가 없는 경우 어떻게 디렉터리를 만들 수 있습니까? (0) | 2023.05.21 |
방법은 정적으로 만들 수 있지만, 그래야 합니까? (0) | 2023.05.21 |
JavaScript의 Zip 배열? (0) | 2023.05.16 |
.NET 정수 대 Int16? (0) | 2023.05.16 |