2017-12-08 1 views
0

예를 들어, 일부 함수의 이름을 바꾸고 다른 함수에서 호출 한 함수의 이름을 바꾸고 싶습니다. 다른 함수를 수정해야하는 함수 rename_func(schema_name text, old_func_name text, new_func_name text)을 작성합니다.PostgreSQL에서 다른 함수를 편집하는 함수

PostgreSQLplpgsql을 사용하여 함수 본문을 저장합니까? 시스템 테이블에서 그러한 열을 찾을 수 없습니다.

난 그냥

SELECT f.proname, f.prosrc, f.probin -- trouble: f.prosrc and f.probin are empty 
FROM pg_proc f; 

모든 기능을 얻을 수 있지만 자신의 코드에 대한 액세스를 두지.

+2

prosrc에 본문이 있습니다 –

+0

본문이 비어있는 함수가 내부/C 언어 함수가 아닌 것은 확실합니까? 그들은 Postgres가 Postgres 함수와 같은 이름을 사용하여 internal/c 함수를 호출해야 함을 나타내는 빈 몸체를 사용했습니다. 나는 누구든지 그 이름을 바꾸고 싶지는 않을 것이다. –

+0

@ ŁukaszKamiński 아니, 그 기능은 내 기능과 같은 이름을 가지고 –

답변

0

방금 ​​pg_proc.prosrc의 내용을 볼 수 없지만 그 내용은 표시되었습니다. 아마도 여러 문자열 (pgAdmin III 사용)이 포함되어있을 수 있습니다. 나는 그것을 쿼리에 사용했고 효과가 있었다.

또한 pg_get_functiondef(func.oid)은 나중에 수정할 수있는 DDL 스크립트를 반환하고을 실행하여 기능 변경 사항을 저장합니다.

덕분에 this answer to other question.

관련 문제