2013-06-14 4 views
0

DB에서 모든 함수의 DDL을 버전 관리 목적으로 가져와야합니다. Here은 쿼리이지만 공용 스키마의 함수에서만 작동합니다. 공용 및 일치 스키마에있는 함수를 만들 때이 함수를 사용하려고하면 하위 쿼리가 너무 많은 행을 반환한다는 오류가 발생합니다.함수 DDL 명령 받기

enter image description here

어떻게 두 개 (또는 그 이상)의 기능을 구분하기 : pronamespace가 변경

select * from pg_proc where proname = 'match_group_1_3_2'; 

만 값이 쿼리를 사용하여 pg_proc에서 모든 값을 확인하여

? 동일한 스키마이지만 서로 다른 인수를 가진 경우 구별하는 방법은 무엇입니까? (오버로드로)

성능 문제로 인해 ANSI 형식이 아닌 기본 postgres 카탈로그를 사용해야합니다.

답변

3

추가 정보를 제공하는 system catalog information functions이 더 있습니다.
그리고 당신은 시스템 테이블 pg_namespace에서 스키마 이름을 얻을 수 있습니다 : 에서

SELECT n.nspname AS schema_name 
     ,p.proname AS function_name 
     ,pg_get_functiondef(p.oid) AS func_def 
     ,pg_get_function_arguments(p.oid) AS args 
     ,pg_get_function_result(p.oid) AS result 
FROM pg_proc p 
JOIN pg_namespace n ON n.oid = p.pronamespace 
WHERE p.proname ILIKE '%match_group_1_3_2%'; 

이 발견되어야하는 기능 데이터베이스의 모든 스키마.

+0

xx하지만 함수 오버로딩은 어떻게됩니까? – Borys

+0

오케이, 이제 알 겠어;) – Borys