最適に関する考慮事項
いったん関数が選択されても、まだ、関数の使用が許可されない理由が考えられます。 それぞれの関数は、特定のデータ・タイプの結果を戻すように定義されています。 結果のデータ・タイプが、関数の呼び出される文脈内で互換性がない場合には、エラーが起こることになります。
例えば、次のように、STEP という名前の 2 つの関数が、結果として別のデータ・タイプで定義されていたとします。
STEP(SMALLINT) RETURNS DATE)
STEP(DOUBLE) RETURNS INTEGER
そして、次の関数参照がありました (ここで、S は SMALLINT 列)。
SELECT ... 3 +STEP(S)
次に、引数のタイプが完全に一致するため、最初の STEP が選択されます。 加算演算子の引数で要求される数値タイプの代わりに、結果のタイプが DATE であるため、このステートメントでエラーが起こることになります。
関数呼び出しの引数が選択された関数のパラメーターのデータ・タイプに完全に一致しない場合は、列への割り当て (割り当ておよび比較を参照してください) と同じ規則を使って、引数は実行時にパラメーターのデータ・タイプに変換されます。これには、精度、位取り、長さ、または CCSID が引数とパラメーター間で異なっているケースも含まれます。
以下の例でも、エラーが起きます。
- 関数は FROM 文節の TABLE 文節で参照されているが、 関数解決ステップで選択された関数はスカラー関数または集約関数である。
- SQL ステートメントで参照されている関数にはスカラー関数または集約関数が必要であるが、 関数解決ステップで選択された関数は表関数である。