Executeメソッド

機能

引数で指定したSELECT文とResultSet生成のための情報をデータベースに通知し,検索結果をResultSetに取得する準備をします。

形式

void Execute (LPCTSTR lpctStatement,
             UINT16 swWait = LOCK_OPT_DEFAULT,
             UINT16 swType = TYPE_EXCLUSIVE|BUFFER_TYPE_SINGLE,
             DBR_BLOB_TYPE nBLOBType = TYPE_BLOB_MEMORY,
             LPCTSTR lpctBLOBFileName = NULL)    throw DBSQLCA

引数

lpctStatement

SQL文を指定します。SELECT文だけが指定できます。?パラメタを使用したSELECT文も指定できます。

SELECT文以外のSQLを実行する場合は,DBRDatabaseオブジェクトのExecuteDirectメソッドを使用してください。

swWait

実行するSQL単位に,検索対象のレコードがほかのトランザクションによってロックされていた場合の動作を指定します。

SQL/Kの場合は,どの値を指定しても,ロックが解除されるまで待ち状態になります。

XDM/SDの場合は,どの値を指定しても,ロックが解除されるまで待たないで,すぐにエラーを返します。

次の値のうち,どれか一つを指定します。

swType

次の三つの値を指定します。

指定する値は,上記三つの値の論理和になります。

このメソッドを実行しなかった場合の動作は,TYPE_EXCLUSIVE | BUFFER_TYPE_SINGLE | VARCHAR_LENGTH_DEFを指定した場合と同じになります。

検索したレコードに対するロック方法
次に示すTYPE_EXCLUSIVE,TYPE_NONE,TYPE_WAIT,TYPE_NOWAIT,TYPE_SHAREDのどれかの値で,検索したレコードに対するロック方法を指定します。
検索時に使用するバッファ数
次に示すBUFFER_TYPE_SINGLE,又はBUFFER_TYPE_DOUBLEのどちらかの値で,検索時に使用するバッファ数を指定します。指定を省略した場合は,BUFFER_TYPE_SINGLEが仮定されます。なお,バッファの利用方法については,「3.3.3 検索性能の向上策」を参照してください。
VARCHARデータをDBR_BINARY型で取得したときのLengthメンバ,RealLengthメンバの意味
次に示す値のどれか一つを指定します。

nBLOBType

BLOB型データの取得方法として,次のどちらかを指定します。

lpctBLOBFileName

BLOB型データを格納するファイル名称のプレフィックスを指定します。

引数nBLOBTypeでTYPE_BLOB_FILEを指定した場合,BLOB型データを格納するファイルのプレフィックスには,この引数で指定した名称が使われます。TYPE_BLOB_FILE以外の値を指定した場合は,この引数での指定は無視されます。

BLOB型データを格納したファイル名称は,「プレフィックス+レコード番号+フィールド番号」で表されます。NULLが指定された場合,DABrokerが自動的に名称を生成します。

戻り値

なし

機能詳細

検索のためのSELECT文と,検索レコードに対するロック方法,検索時にバッファを幾つ使うか,及びBLOB型データの取得方法についてデータベースに通知し,検索結果をResultSetに取得する準備をします。

ファイル上でBLOB型データを扱う場合の制限事項

データの格納されているファイルは,DABrokerが終了しても削除されません。アプリケーション自身で削除してください。

作成されたファイルのアクセス権限は,アプリケーションの実行ユーザ及びデフォルトの権限に依存します。例えば,HP-UX上で"user1"が実行しているアプリケーションで,デフォルトumaskが0666の場合,取得したBLOB型データが格納されるファイルも,"user1"の所有する0666のアクセス権限が付与されたファイルとして生成されます。

発生する例外

DBSQLCA(RetCode)

DB_ERROR_NOT_ENOUGH_MEMORY
メモリ容量が不足しています。
DB_ERROR_IN_ASYNC_EXECUTE
ステートメントが非同期実行処理中です。
DB_ERROR_DRIVER_ERROR
DBMSでエラーが発生しました。
DB_ERROR_NOT_CONNECTED
データベースに接続されていません。
DB_ERROR_NOT_SELECT_STATEMENT
指定されたSQL文はSELECT文ではありません。
DB_ERROR_DAB_ACCESS_ERROR
DABrokerでエラーが発生しました。
DBSQLCAクラスで詳細コードを確認してください。
DB_ERROR_DAB_SYSTEMCALL_ERROR
システムコールでエラーが発生しました。
DBSQLCAクラスで詳細コードを確認してください。
DB_DRV_ERROR_PHOLDER_AND_QP
プレースホルダと?パラメタが混在するSQL文の指定はできません。
DB_ERROR_TIMEOUT
タイムアウトが発生したため制御を戻します。
DB_ERROR_NOT_RELATIONSHIP_TO_DBRDATABASE
DBRResultSetコンストラクタで指定されたDBRDatabaseオブジェクトと関連付けることができませんでした。一つのDBRDatabaseオブジェクトに対して関連付けられるオブジェクトは64個までです。
DB_DRV_ERROR_INVALID_SQL_EXCLUSIVE
WITH句で始まるSQL文の指定時には,DBResultSetオブジェクトの生成オプションをTYPE_EXCLUSIVE以外に設定してください。
DB_DRV_ERROR_STAT_COUNT
ステートメントの個数が上限値を超えました。