ホームページ > データベース > mysql チュートリアル > PostgreSQLで特定の名前を持つすべてのオーバーロードされた関数を削除するにはどうすればよいですか?

PostgreSQLで特定の名前を持つすべてのオーバーロードされた関数を削除するにはどうすればよいですか?

DDD
リリース: 2024-12-22 17:27:12
オリジナル
1004 人が閲覧しました

How to Drop All Overloaded Functions with a Specific Name in 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');
ログイン後にコピー

メモ

  • クエリおよび関数内の関数名は、二重引用符なしで大文字と小文字を区別して指定する必要があります。 -sensitive.
  • クエリと関数は、現在の検索で関数のみを削除します
  • これらのメソッドは同じ名前のオーバーロードされた関数も削除することに注意することが重要です。
  • これらのコマンドはデータベースから関数を永久に削除する可能性があるため、常に注意して実行してください。

以上がPostgreSQLで特定の名前を持つすべてのオーバーロードされた関数を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート