PostgreSQL ストアド プロシージャのカスタマイズを追求する場合、一般的なアプローチには、モード パラメーターを作成して、さまざまな更新シナリオを区別することが含まれます。単一の機能。ただし、最適なソリューションは、特定の要件と当面のタスクの複雑さに大きく依存します。
可変個引数入力パラメーター (例のモード パラメーターと同様)柔軟な数の引数を関数に渡すことができます。この柔軟性は、入力パラメータの数が事前にわからない状況で特に役立ちます。
ただし、可変個の引数を処理するために追加のオーバーヘッドが必要となるため、可変引数パラメータの計算コストが高くなる可能性があります。
関数パラメーターにデフォルト値を使用することは、一部の入力が必要な場合の、よりシンプルで効率的なソリューションです。パラメータはオプションですが、null ではありません。デフォルト値を設定することで、欠落パラメータを処理するための複雑なロジックの必要性を回避できます。
回答で提供されている例には、このアプローチが効率的に組み込まれています。
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$;
この関数はより単純で、計算的には優れています。可変個引数アプローチよりも負荷が低くなります。
次の場合各関数の目的は明確であるため、タスクごとに個別に特化した関数を作成する方が効率的です。機能を個別の関数に分割することで、各関数をその特定の目的に合わせて最適化できます。
最適なアプローチは、アプリケーションの特定の要件によって異なります。オプションのパラメーターが少数しか存在しない単純な場合は、関数パラメーターにデフォルト値を使用するのが簡単で効率的な解決策です。幅広いオプションのパラメーターを含むより複雑なシナリオの場合は、可変個の入力パラメーターまたは複数の特殊な関数の方が適切な場合があります。
以上がPostgreSQL 関数で可変長の入力パラメータを最適に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。