すべてのプロダクト
Search
ドキュメントセンター

PolarDB:関数の呼び出し

最終更新日:Jun 03, 2024

どちらの表記でも、関数宣言で指定されたデフォルト値を持つパラメータは、呼び出しに書き込む必要はありません。 ただし、パラメータの任意の組み合わせを省略できるため、これは名前付き表記で特に役立ちます。一方、位置表記では、パラメータは右から左にのみ省略できます。

概要

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には、abの2つの必須パラメーターがあります。 さらに、デフォルトでfalseに設定されるオプションのパラメーター大文字が1つあります。 abの入力は連結され、大文字のパラメータに応じて大文字または小文字に強制されます。 この関数定義の残りの詳細は、ここでは重要ではない。

位置表記の使用

位置表記は、引数を関数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行) 

上記のクエリでは、引数abを位置指定し、大文字をnameで指定します。 この例では、ドキュメント以外はほとんど追加されません。 デフォルト値を持つ多数のパラメータを持つより複雑な関数を使用すると、名前付きまたは混合表記法は、書き込みを大幅に節約し、エラーの可能性を減らすことができます。

現在、名前付き呼び出し表記と混合呼び出し表記は、集計関数を呼び出すときには使用できません (ただし、集計関数をウィンドウ関数として使用すると機能します) 。