可変入力パラメータを持つ関数
PostgreSQL でストアド プロシージャ (関数) を作成する場合、入力に基づいてテーブルの更新を処理する必要があります。パラメータ。可変入力パラメータに対応するための 1 つのアプローチは、モード パラメータを導入することです。このモード パラメータは、更新クエリで使用する特定のパラメータを制御します。
ただし、別の方法として、関数パラメータのデフォルト値を使用することもできます。
デフォルト値
関数パラメータのデフォルト値を定義することで、関数を簡素化し、コードの可読性を向上させることができます。次の例を考えてみましょう:
CREATE OR REPLACE FUNCTION update_site(_name text, _city text DEFAULT NULL, _telephone int DEFAULT NULL) RETURNS int LANGUAGE plpgsql AS $func$ BEGIN IF _city IS NULL AND _telephone IS NULL THEN RAISE WARNING 'At least one not-null input value required!'; RETURN; -- nothing to update END IF; UPDATE "Sites" SET "City" = COALESCE(_city, "City") , "Telephone" = COALESCE(_telephone, "Telephone") WHERE "SiteName" = _name; END $func$;
デフォルト値の利点:
使用法:
この更新された関数は、さまざまな呼び出し表記法で使用できます:
SELECT update_site('foo', 'New York'); -- no telephone
SELECT update_site(name => 'foo', _telephone => 123); -- no city
SELECT update_site('foo', _telephone => 123); -- still no city
効率
どちらのアプローチも、モード パラメーターまたはデフォルト値を使用して、単純な更新操作では効率的です。ただし、より複雑なシナリオの場合は、デフォルト値を使用すると、より明確で保守しやすいソリューションが提供される場合があります。
アプローチの選択
特定の要件に応じた最適な選択です。列が NOT NULL として定義されている場合、デフォルト値を使用すると、より簡単で高速なアプローチが提供されます。さまざまな出力を伴う SELECT クエリを含むより複雑なシナリオの場合は、VARIADIC またはポリモーフィック入力タイプと動的 SQL の使用を検討してください。
以上がデフォルト値により、可変入力パラメーターの PostgreSQL 関数設計はどのように改善できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。