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

LANSA

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

·         ファ イルに存在しないフィールド

·         IsSqlNull などの組み込みファンクション

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

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

ÝI/Oコマンド