Page History
7.107.1 SELECT のパラメータ
NBRSELECT_P#NBR_KEYSSELECT_P#OPTIONS
|
|---|
...
- *ALLを指定した場合、現在アクティブなファイルのすべてのフィールドが選択されます。
- *ALL_REALを指定した場合、現在アクティブなファイルのすべての実フィールドが選択されます。
- *ALL_VIRTを指定した場合、現在アクティブなファイルのすべての仮想フィールドが選択されます。
- *EXCLUDINGを指定した場合、この特別な値に続けて指定するフィールドがフィールド・リストから除外されます。
- *INCLUDINGを指定した場合、この特別な値に続けて指定するフィールドがフィールド・リストに含められます。この特殊な値は、*EXCLUDINGエントリーによって、フィールド・リストが除外モードに移行した後にのみ必要です。
| Note | ||
|---|---|---|
| ||
注意:OTHERによって保守されている論理ファイルからすべてのフィールドを選択すると、基になっている物理ファイルのすべてのフィールドがフィールド・リストに含められます。 |
...
BLOBまたはCLOBデータを取得すると、*SQLNULLまたはファイル名になることに注意してください。ファイル名の場合、データベース・ファイルのデータがそのファイルにコピーされています。
| Warning | ||
|---|---|---|
| ||
警告:ファイルからBLOBまたはCLOBフィールドを取得する操作には時間がかかります。 |
...
|
|---|
「I/Oコマンドでのファイル名の指定」を参照してください。
|
|---|
「条件および式の指定」および「I/OコマンドでのWHEREパラメータの指定」を参照してください。
SELECT/ENDSELECTループでWHERE条件を使用した後のフィールドの内容は予測できません。WHERE条件に一致するレコードのみがSELECT/ENDSELECTループで処理されます。
|
|---|
「I/Oコマンドでのファイル・キー・リストの指定」を参照してください。
|
|---|
...
各フィールド・タイプにおける*NULL値の定義については、「7.12.1 CHANGE のパラメータ」を参照してください。
直接的なRDMLロジックによってキー・フィールドの数を変化させる場合は、このパラメータに数値フィールドの名前を指定します。指定するフィールドには、実行時にキー数の値が保持されていなければなりません。指定するフィールドは、数値タイプで、このファンクションまたはデータ・ディクショナリで定義されていなければなりません。
...
この場合、郵便番号が2で始まる(すなわち、2000~2999)、州がNSWのすべての名前が選択されます。これは、末尾ゼロが無視される、数値フィールドに対する総称検索の一例です。
移植性に関する考慮事項 | ネイティブI/Oを使用する場合、総称的に検索キーに一致しないキーが検出されると、暗黙的に*ENDWHEREが使用されます。アプリケーションが要求どおりに機能することを検査によって確認する必要があります。 |
...
戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、このフィールドは、長さ2文字の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールド#IO$STSは更新されます。
値については、「RDML I/O戻りコード」を参照してください。
|
|---|
...
*YESを指定した場合は、レコードがロックされます。ロックしたレコードは、後でユーザーの責任により解放してください。
| Note | ||
|---|---|---|
| ||
注意:LOCK(*YES)は、レコード・レベルのロックを実行します。これにより、オペレーティング・システム内およびオペレーティング・システム間の動作(コミット制御による複数レコードのロック、デフォルトの待機時間など)が変化する場合があります。そのため、LOCK_OBJECT組み込み関数を使用して、適切かつ完全な「ユーザー・オブジェクト」のロック・プロトコルを開発することをお勧めします。 |
移植性に関する考慮事項 | 可搬性のあるアプリケーションではサポートされないため、使用しないでください。Visual LANSAで使用すると、ビルド警告が生成されます。 |
...
このパラメータで指定するフィールドは、数値タイプで、このファンクションまたはLANSAデータ・ディクショナリで定義されていなければなりません。
| Note | ||
|---|---|---|
| ||
注意:OPTIONS(*BLOCKnnn)を使用した場合にこのパラメータで返される値は、読み取られたばかりのレコード・ブロック内で最後のレコードの相対レコード番号を表し、必ずしもSELECT/ENDSELECTループで処理されているレコードの番号ではないため、役に立たない場合がほとんどです。 |
詳細については、『Visual LANSA開発者ガイド』の「インポート・テーブル定義」を参照してください。
|
|---|
...
通常、SELECTループが終了するのは、SELECTループによって、選択条件に一致するすべてのレコードが読み取られ、選択の可能性が検査され、処理された場合のみです。*ENDWHEREオプションを指定した場合、WHERE条件がfalseになるレコードが初めて読み取られた時点でSELECTループが終了します。
移植性に関する考慮事項 | 可搬性のあるアプリケーションでSELECTオプション*STARTKEYおよび*ENDWHEREを使用することはお勧めしません。これらのオプションを使用すると、SQL要求を使用したときに、パフォーマンスに悪影響を及ぼす可能性があります。 *STARTKEYオプションは、「ファイル・カーソル」の配置をエミュレートします。 SQLを使用する場合、*ENDWHEREオプションは、SELECTループ内の条件を検査します。WHERE句内には配置しません。 |
...
新しい値を適用するには、[区画の定義]タブで[*ENDWHERESQLを強制的に行う]オプションを選択します。この区画オプションは、SELECTコマンド内のすべての*ENDWHEREオプションを、*ENDWHERESQLがコーディングされているかのように解釈するようLANSAに指示します。コードを更新または新しいコードを作成する際は、適切な箇所でこの新しいオプションを使用するようSELECTコマンドを変更することをお勧めします。
移植性に関する考慮事項 | この値を指定すると、実行時のSELECT操作の解釈が異なってきます。 - SQLを使用するようコードが生成されている場合、この*ENDWHERESQLオプションは事実上無視され、WHERE条件がSQL要求のWHERE句内に配置されます(実列がすべて指定されている場合)。 - ネイティブI/Oアクセスを使用するようコードが生成されている場合、*ENDWHERESQLオプションは、*ENDWHEREオプションと同ものとして解釈されます。 |
...
- *BLOCKnnnパラメータ値の'nnn'コンポーネントでは、各ブロックで読み取るレコード数を指定します。'nnn'に指定可能な値は、010、020、030、040、050、060、070、080、090、100、150、200、250、300、400、または500です。値として、32Kブロックに収まる最大レコード数を指定することをお勧めします。
- *BLOCKnnnを使用すると、FUNCTIONコマンドで実際に*DBOPTIMISEが指定されているかどうかに関わらず、*DBOPTIMISEが使用されます。
- SELECTコマンドでWITH_KEYパラメータを指定しないでください。WITH_KEYパラメータを指定すると、ファイル・カーソルの配置操作が実行され、ブロック・ロジックが無効になります。
- ファンクション内の他の場所でFROM_FILEパラメータに指定されたファイルに対して他のI/O操作を実行しないでください。
- SELECT/ENDSELECTループは、プログラム呼び出し時に一度のみ実行してください。その後、SELECT/ENDSELECTループを(再)実行しようとすると、ファイル・カーソルがファイルの先頭に(再)配置されないため、予期しない結果になります。この機能が必要な場合は、SELECT/ENDSELECTループを(再)実行する前に閉じて(CLOSE)ください。
- ファイルをオプション*KEEPOPENで開いたままにしないでください。また、ファイルは、このファンクションを含めて他のファンクション/プログラムによってすでに開かれた状態(または開いたまま)ではなりません。ファイルがすでに開かれている場合、ファイル・カーソルの現在位置は予期できません。ファイルが開かれた状態である可能性がある場合は、まずCLOSEコマンドでファイルを閉じてください。
- OPTIONS(*BLOCKnnn)を使用する場合、RETURN_RRNパラメータで返される相対レコード番号は無意味になります。この番号は、現在のブロックで読み取られた最後のレコードの番号を表し、必ずしもSELECT/ENDSELECTループで処理されるレコードとは限らないためです。
移植性に関する考慮事項 | 可搬性のあるアプリケーションではサポートされないため、使用しないでください。Visual LANSAで使用すると、全構文検査で致命的エラーが発行されます。*BLOCKnnnオプションは無視されるため、アプリケーションには何の効果もありません。 |
...