I/OコマンドでのWHEREパラメータの指定

SQL Nullを認めているフィールド

SQL Nullを認めているフィールドは、他のフィールドと同じようにキーまたはWHEREパラメータの一部として使用することができます。また、このフィールドはSQL Nullと比較することができます。次の例は、#MYFLD1がSQL Nullではなく実値を持つMYFILEで、すべての行を取得する方法を示しています。

SELECT(#MYFLDS) FROM_FILE(MYFILE) WHERE(#MYFLD1 *IsNot *Sqlnull)

注:SQL Nullを認めているフィールドは、そのフィールドがSQL Nullの場合、実行時のWHEREパラメータでの動作が異なる場合があります。詳細については、「SQL Null が可能なフィールドの割当、条件、式」を参照してください。

タイプBLOB、CLOB、Binary、VarBinaryのフィールド

ファイル内のBLOBフィールドまたはCLOBフィールドは、*SQLNULLと比較されない限り、WHERE条件で使用することはできません。例えば、以下のようになります。

SELECT(#MYFLDS) FROM_FILE(MYFILE) WHERE(#MYBLOB *Is *Sqlnull)

ファイル内のBLOBフィールドまたはCLOBフィールドを*SQLNULL以外の値と比較しようとすると、FFCエラーが発生します。

タイプFloatのフィールド

Floatは、不正確な数値タイプです。FFCでは、*EQまたは*NE(または同等の式)を使用して浮動小数点が、フィールド、*ZERO以外のシステム変数、または0、*NULL、*SQLNULL以外のリテラル値と比較された場合、警告メッセージが出力されます。

パフォーマンス

以下はIBM i のRDMLXおよび、IBM iプラットフォーム以外のRDMLとRDMLXに適用されます。

WHERE条件内で以下のものを使用する場合は、呼び出し元ファンクションまたはコンポーネントでそれを評価する必要があります。

パフォーマンスを最大限に高めるために、WHERE句内では、ファイルに存在するフィールドのみを使用してください。これにより、I/Oモジュールは、呼び出し元ファンクションまたはコンポーネントに指定されたキーに一致するすべての行を返す代わりに、条件を評価して、WHEREに一致する行のみを返すことができます。

よりよいパフォーマンスのために、ファイルの仮想フィールドではなく、現実のフィールドのみ使用してください。これにより、I/OコマンドがSQL内で処理される場合、返す行を最小にします。

Ý 13.1.1 I/Oコマンド