最適に関する考慮事項

いったん関数が選択されても、まだ、関数の使用が許可されない理由が考えられます。 それぞれの関数は、特定のデータ・タイプの結果を戻すように定義されています。 結果のデータ・タイプが、関数の呼び出される文脈内で互換性がない場合には、エラーが起こることになります。

例えば、次のように、STEP という名前の 2 つの関数が、結果として別のデータ・タイプで定義されていたとします。

   STEP(SMALLINT) RETURNS DATE)
   STEP(DOUBLE) RETURNS INTEGER

そして、次の関数参照がありました (ここで、S は SMALLINT 列)。

   SELECT ... 3 +STEP(S)

次に、引数のタイプが完全に一致するため、最初の STEP が選択されます。 加算演算子の引数で要求される数値タイプの代わりに、結果のタイプが DATE であるため、このステートメントでエラーが起こることになります。

関数呼び出しの引数が選択された関数のパラメーターのデータ・タイプに完全に一致しない場合は、列への割り当て (割り当ておよび比較を参照してください) と同じ規則を使って、引数は実行時にパラメーターのデータ・タイプに変換されます。これには、精度、位取り、長さ、または CCSID が引数とパラメーター間で異なっているケースも含まれます。

以下の例でも、エラーが起きます。

  • 関数は FROM 文節の TABLE 文節で参照されているが、 関数解決ステップで選択された関数はスカラー関数または集約関数である。
  • SQL ステートメントで参照されている関数にはスカラー関数または集約関数が必要であるが、 関数解決ステップで選択された関数は表関数である。