집 >데이터 베이스 >MySQL 튜토리얼 >매개변수에 관계없이 PostgreSQL에서 와일드카드 이름과 일치하는 모든 함수를 삭제할 수 있습니까?
매개변수에 관계없이 와일드카드를 사용하여 함수를 삭제할 수 있나요?
소개
유지관리 텍스트 파일에 저장된 함수는 특히 매개변수를 추가하거나 제거할 때 번거로울 수 있습니다. 각 기능에 대한 정확한 매개변수 순서를 수동으로 입력하는 것은 지루할 수 있습니다. 이 기사에서는 매개변수를 지정할 필요 없이 와일드카드를 사용하여 주어진 이름을 가진 모든 함수를 삭제하는 솔루션을 탐색합니다.
함수 삭제 쿼리
필요한 함수를 생성하려면 DDL 문에서는 다음 쿼리를 실행합니다.
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' -- Replace 'my_function_name' with the target function name AND pg_function_is_visible(oid); -- Restrict to the current search path
쿼리는 큰따옴표로 묶인 인수 유형을 사용하여 DROP FUNCTION 문을 생성합니다. 그리고 스키마 자격을 갖추었습니다. 이는 SQL 주입 취약점을 방지하고 현재 검색 경로와 일치합니다.
Drop 문 실행 기능
DROP 문을 즉시 실행하려면 PL/pgSQL 함수를 생성하세요. :
CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int) LANGUAGE plpgsql AS $func$ DECLARE _sql text; BEGIN SELECT count(*)::int, 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ') FROM pg_catalog.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 $func$;
원하는 함수 이름으로 함수를 호출하여 일치하는 함수를 삭제하고 번호를 반환합니다. 삭제됨:
SELECT f_delfunc('my_function_name');
추가 고려 사항
위 내용은 매개변수에 관계없이 PostgreSQL에서 와일드카드 이름과 일치하는 모든 함수를 삭제할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!