刪除帶有通配符的函數
在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()' 函數確保僅選擇目前搜尋路徑中的函數。
函數
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 $$;
或者,您可以使用PL/pgSQL 函數來自動化刪除帶有通配符的函數的過程:
SELECT f_delfunc('my_function_name');
這個函數的過程:
這個函數的過程:以上是如何刪除 PostgreSQL 中具有特定名稱的所有重載函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!