どちらの表記でも、関数宣言で指定されたデフォルト値を持つパラメータは、呼び出しに書き込む必要はありません。 ただし、パラメータの任意の組み合わせを省略できるため、これは名前付き表記で特に役立ちます。一方、位置表記では、パラメータは右から左にのみ省略できます。
概要
PostgreSQLは、位置表記と名前付き表記を組み合わせた混合表記もサポートしています。 この場合、位置パラメータが最初に書き込まれ、名前付きパラメータがその後に表示されます。
次の例では、次の関数定義を使用して、3つの表記すべての使用方法を示します。
CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false)
RETURNSテキスト
AS
$$
厳選ケース
$3が上のとき ($1 | | '| | $2)
ELSE LOWER($1 | | '| | $2)
END;
$$
言語SQL IMMUTABLE STRICT;
関数concat_lower_or_upper
には、a
とb
の2つの必須パラメーターがあります。 さらに、デフォルトでfalse
に設定されるオプションのパラメーター大文字
が1つあります。 a
とb
の入力は連結され、大文字
のパラメータに応じて大文字または小文字に強制されます。 この関数定義の残りの詳細は、ここでは重要ではない。
位置表記の使用
位置表記は、引数を関数inPostgreSQLに渡すための従来のメカニズムです。 例は次のとおりです。
SELECT concat_lower_or_upper('Hello', 'World', true);
concat_lower_or_upper
-----------------------
ハローワールド
(1行)
すべての引数は順番に指定されます。 大文字はtrueとして指定されているため、結果は大文字になります。 別の例は次のとおりです。''sql
SELECT concat_lower_or_upper('Hello' 、'World');
concat_lower_or_upper
-----------------------
Hello World
(1行)
ここでは、大文字
のパラメーターは省略されているため、デフォルト値のfalse
を受け取り、小文字の出力になります。 位置表記では、引数がデフォルトである限り、引数は右から左に省略できます。
名前付き表記の使用
名前付き表記では、各引数の名前は =>
を使用して指定し、引数式から区切ります。 設定例:
SELECT concat_lower_or_upper(a => 'Hello', b => 'World');
concat_lower_or_upper
-----------------------
Hello World
(1行)
ここでも、引数大文字
は省略されたため、暗黙的にfalse
に設定されます。 名前付き表記法を使用する利点の1つは、引数を任意の順序で指定できることです。
SELECT concat_lower_or_upper(a => 'Hello', b => 'World', uppercase => true);
concat_lower_or_upper
-----------------------
ハローワールド
(1行)
SELECT concat_lower_or_upper(a => 'Hello' 、uppercase => true、b => 'World');
concat_lower_or_upper
-----------------------
ハローワールド
(1行)
":=" に基づく古い構文は、下位互換性のためにサポートされています。
SELECT concat_lower_or_upper(a := 'Hello' 、大文字:= true、b := 'World');
concat_lower_or_upper
-----------------------
ハローワールド
(1行)
混合表記の使用
混合表記は、位置表記と名前付き表記を組み合わせたものです。 ただし、すでに述べたように、名前付き引数は位置引数に先行できません。 設定例:
SELECT concat_lower_or_upper('Hello', 'World', uppercase => true);
concat_lower_or_upper
-----------------------
ハローワールド
(1行)
上記のクエリでは、引数a
とb
を位置指定し、大文字
をnameで指定します。 この例では、ドキュメント以外はほとんど追加されません。 デフォルト値を持つ多数のパラメータを持つより複雑な関数を使用すると、名前付きまたは混合表記法は、書き込みを大幅に節約し、エラーの可能性を減らすことができます。
注
現在、名前付き呼び出し表記と混合呼び出し表記は、集計関数を呼び出すときには使用できません (ただし、集計関数をウィンドウ関数として使用すると機能します) 。