関数解決および入力引数のキャスト
Db2 は、候補となる関数の最適な適合を検討する際に、入力引数を関数解決のための対応するパラメータのデータ型に暗黙的にキャストできるかどうかを判断します。
キャスト可能プロセスでは最初に、関数呼び出しの入力引数のデータ・タイプが、関数定義の対応するパラメーターのデータ・タイプと一致しているか、あるいはそのデータ・タイプにプロモートできるかどうかを考慮し、次に、入力引数を関数解決の対応するパラメーターのデータ・タイプに暗黙的にキャストできるかどうかを考慮することにより、最適な関数を判別します。 Db2 は、候補となる関数のセットについて、以下のプロセスを使用して、左から右の順にパラメータリストを比較します
- 関数呼び出しの引数のデータ・タイプが、候補関数の定義の対応するパラメーターのデータ・タイプと比較され、各引数を対応するパラメーターにプロモートまたはキャストできるかどうかが確認されます。 そうでないと、エラーが戻されます。
関数が選択された場合、正常に使用されるかどうかは、その関数が、戻される結果が許可されるコンテキストにおいて呼び出されるかどうかによって決まります。 例えば、表が許可されない場所に関数が表を戻した場合、エラーが戻されます。
関数解決の暗黙的キャスト: 引数がユーザー定義タイプ、バイナリー、ROWID、または XML データ・タイプである場合、関数解決の暗黙的キャストはサポートされません。 組み込み関数またはユーザー定義 cast 関数の場合にもサポートされません。 暗黙的キャストは、以下の場合にサポートされます。
- 数値データ・タイプは、ソース・データ・タイプのデータ・タイプ・プロモーション・リストにない別の数値データ・タイプの値にキャストできます。 これには、数値をプロモーション・リストの下位の数値データ・タイプにキャストすることを含みます。
- 数値データ・タイプは、LOB の場合を除き、任意の文字ストリング・データ・タイプまたはグラフィック・ストリング・データ・タイプにキャストできます。
- LOB を除く文字ストリング・データまたはグラフィック・ストリング・データは、数値データ・タイプにキャストできます。
- LOB を除く文字ストリング・データまたはグラフィック・ストリング・データは、日付、時刻、またはタイム・スタンプのデータ・タイプにキャストできます。
- LOB を除く可変長文字ストリング・データ・タイプは、固定長文字データ・タイプにキャストできます。