例: 文字型に関しての関数の選択 - 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/qwr1571437338192.ditamap
dita:ditavalPath
ja-JP/qwr1571437338192.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

次のようなFind_Text関数群と、CREATE FUNCTION文のSPECIFIC句で指定された対応する特定名があるとします。

関数の名前とパラメータ 特定名
Find_Text(SearchedString CHAR(40), Pattern VARCHAR(10)) F1
Find_Text(SearchedString VARCHAR(10), Pattern CHAR(20)) F2
Find_Text(SearchedString CHAR(20), Pattern CHAR(10)) F3

関数呼び出しの引数型と正確に一致するパラメータ型の関数がない場合に、Teradata Databaseが呼び出す関数は、次のテーブルのようになります。

最初の引数のデータ型 第2の引数のデータ型 Teradata Databaseの動作
VARCHAR(40) CHAR(50) 特定名がF2の関数を呼び出します。

最初の引数のテストの後、F2がリストに残ります。

第2の引数のテストの後、F2が残ります(厳密一致)。

文字列の長さは考慮されないため、切り捨てが発生する可能性があります。

VARCHAR(80) VARCHAR(20) エラーが返されます。

最初の引数のテストの後、F2がリストに残ります。

第2の引数のテストの後、リストには何も残りません。関数にVARCHARを要求したが、唯一の選択肢はCHARであり、その優先順位がVARCHARよりも低いため、F2は選択されません。

VARCHAR引数で関数が呼び出されるようにしたい場合は、CHARをパラメータ型として使用しないようにしてください。