집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 특정 이름을 가진 모든 오버로드된 함수를 삭제하는 방법은 무엇입니까?
와일드카드를 사용하여 함수 삭제
PostgreSQL에서는 매개변수의 수나 유형에 관계없이 주어진 이름을 가진 모든 함수를 삭제할 수 있습니다. 가지다. 이는 많은 수의 함수를 관리할 때 유용할 수 있습니다.
기본 쿼리
다음 쿼리는 특정 이름을 가진 모든 함수를 삭제하는 데 필요한 모든 DDL 문을 생성합니다.
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' AND pg_function_is_visible(oid);
이 쿼리는 'my_function_name' 함수의 각 오버로드에 대해 'DROP FUNCTION' 문을 생성하여 다음을 보장합니다. 모든 버전의 함수가 제거됩니다. 'pg_function_is_visible()' 함수는 현재 검색 경로의 함수만 선택되도록 보장합니다.
Function
또는 PL/pgSQL 함수를 사용하여 자동화할 수 있습니다. 와일드카드를 사용하여 함수를 삭제하는 프로세스:
CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int) LANGUAGE plpgsql AS $$ DECLARE _sql text; BEGIN SELECT count(*)::int , 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ') FROM pg_proc WHERE proname = _name AND pg_function_is_visible(oid) INTO functions_dropped, _sql; IF functions_dropped > 0 THEN EXECUTE _sql; END IF; END $$;
이 함수는 함수 이름을 인수로 사용하고 삭제된 함수 수를 반환합니다. 다음과 같이 호출할 수 있습니다:
SELECT f_delfunc('my_function_name');
Notes
위 내용은 PostgreSQL에서 특정 이름을 가진 모든 오버로드된 함수를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!