ワイルドカードを使用した関数の削除
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');
メモ
以上がPostgreSQLで特定の名前を持つすべてのオーバーロードされた関数を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。