ジェネリック・サイズの引数
ジェネリック・サイズ (任意のサイズ) 引数は、ストリングおよび数値に関する柔軟性が優れています。 シグニチャー (または戻り値) において、ANY キーワードを使用して文字ストリングまたは数値を宣言できます。 例:
MYDB.SCHEMA(MYUSER)=> CREATE FUNCTION CustomerName(varchar(ANY))
RETURNS int4 LANGUAGE CPP PARAMETER STYLE NPSGENERIC API VERSION 2
EXTERNAL CLASS NAME 'CCustomerName'
EXTERNAL HOST OBJECT '/home/nz/udx_files/customername.o_x86'
EXTERNAL SPU OBJECT '/home/nz/udx_files/customername.o_spu10';関数は、最大 64,000 文字 (VARCHAR の最大値) の文字ストリングを受け入れます。 関数の本文中で、コードは、任意の有効な長さのストリングを受け取り可能であるという計画に沿って、ストリングおよび数値を処理する必要があります。 つまり、ストリングのサイズを検査して取得し、必要に応じて処理を行い、値を関数に戻します。
ジェネリック・サイズ引数により、入力ストリングおよび数値に特定の制限を設定しないようにすることができます。また、可変の入力値サイズを管理するために開発者が過度に大きいサイズまたは最大サイズの値を使用しなければならないような場合に、ジェネリック・サイズ引数を使用すると、リソースの割り振りを最小化できます。 また、このフォーマットにより、入力引数や戻り値が異なる類似したプロシージャーを登録および保守する必要性や、入力値がキャストされる可能性を軽減することもできます。
注:UDFは一般的な引数と一般的な戻り値をサポートする。 一方、UDA は、ジェネリック引数のみをサポートします。 UDA の戻り値および状態引数には、定数のデータ・サイズを指定する必要があります。 UDTF は、スカラー UDF のジェネリック戻り値に類似したシェイパーをサポートします。