SQL UDFに対するパラメータの渡し - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

パラメータをUDFに直接渡すと、Teradata DatabaseはStatement Infoパーセルにパラメータのメタデータを返します(詳細は<Teradata CLI V2リファレンス-メインフレーム接続システム>または<Teradata® CLI V2メインフレーム接続システム、B035-2417>を参照)。外部UDFまたはメソッドにパラメータを渡すためのルールは、SQL UDF(SQL UDFの使用上のルールおよび関数呼び出し引数を参照)にも適用されます。

この例では、SQL UDFはオーバーロードされていないため、Teradata DatabaseはUDFに直接渡された?パラメータを使用してUDFを解決できます。Teradata Databaseは、UDFパラメータに関するパラメータのメタデータを、対象の位置に返します。

SELECT myudf(1, ?)
FROM t1;

この例ではSQL UDFがオーバーロードされているため、許容値に対して?パラメータを明示的にキャストして、PrepareモードでUDFを解決できるようにする必要があります。このようなキャストを指定しない場合、Teradata DatabaseはUDFを解決できないためリクエストはアボートし、システムはリクエスト側にエラーを返します。パラメータのメタデータのために、返されるメタデータのデータ型フィールドは、キャストの結果の型になります。

SELECT myudf(1, CAST(? AS INTEGER), col3)
FROM t1;