FireDAC.Comp.Client.TFDRdbmsDataSet.Open
Delphi
procedure Open(const ASQL: String); overload;
procedure Open(const ASQL: String; const AParams: array of Variant); overload;
procedure Open(const ASQL: String; const AParams: array of Variant; const ATypes: array of TFieldType); overload;
C++
HIDESBASE void __fastcall Open(const System::UnicodeString ASQL)/* overload */;
HIDESBASE void __fastcall Open(const System::UnicodeString ASQL, const System::Variant *AParams, const int AParams_High)/* overload */;
HIDESBASE void __fastcall Open(const System::UnicodeString ASQL, const System::Variant *AParams, const int AParams_High, const Data::Db::TFieldType *ATypes, const int ATypes_High)/* overload */;
inline void __fastcall Open(){ Data::Db::TDataSet::Open(); }
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDRdbmsDataSet |
説明
指定した SQL 文を実行します。
Open を呼び出すと、ASQL
に指定した SQL 文、または ASQL
が空の場合には内部コマンド オブジェクトに現在割り当てられている SQL 文を実行することができます。
このメソッドは、以下のようにオーバーロード(多重定義)されています。
- 1 つ目のオーバーロード メソッドは、指定された SQL 文を実行し、データセットを開きます。
- 2 つ目のオーバーロード メソッドは、指定されたパラメータ値を使って指定された SQL 文を実行し、データセットを開きます。
- 3 つ目のオーバーロード メソッドは、指定されたパラメータ値を使って指定された SQL 文を実行し、データセットを開きます。
データセットがアクティブだった場合、このメソッドはそのデータセットを閉じ、コマンド テキストに ASQL
を代入し、Active プロパティを True に設定します。Active が True の場合、データセットにはデータベースから取り出したデータが設定されます。このメソッドでは、位置によるパラメータのバインドと正確なパラメータ データ型を使って、パラメータ値を指定することができます。パラメータ データ型を変えずにおく必要がある場合には、パラメータに対応する配列項目に ftUnknown
を設定します。
アプリケーションで同じ SQL コマンドを何度も実行する必要があるなら、通常どおりに SQL プロパティを設定し、Open を最初に呼び出す前に Prepare を呼び出し、それから任意のバージョンの Open を ASQL
を指定せずに呼び出してください。
ResourceOptions.CmdExecMode によって非同期実行モードを制御したり、ResourceOptions.CmdExecTimeout によってコマンド実行の最大時間を設定することができます。この最大時間が過ぎると、コマンド実行はキャンセルされ、例外が発生します。
コマンド実行をキャンセルするには、TFDAdaptedDataSet.AbortJob を使用します。DBMS からエラーが返されると、FireDAC は例外を発生させます。詳細は、「エラーの処理」を参照してください。長い文字列値の場合に次のようなエラーが発生する可能性があります。
[FireDAC][Phys][ODBC]-345. Data too large for variable [P]. Max len = [8002], actual len = [18329]
この場合には、対応するパラメータ('P')に ftMemo
または ftBlob
を指定する必要があります。あるいは、標準の Open 呼び出しを使って、パラメータのデータ型と値を別々にセットアップしてください。
例
//Example 1:
FDQuery1.Open('select * from customers');
//Example 2:
FDQuery1.Open('select * from Employees where department_id = :id', [100]);
....
FDQuery1.Open('', [101]); // executes the above SQL command, but for ID = 101
//Example 3:
FDQuery1.Open('select * from Employees where department_id = :id', [100], [ftInteger]);