16.8.2 SQLExecDirect,SQLExecDirectW
(1) 機能
準備されたSQL文を実行します。SQL文にパラメタマーカーがあれば,パラメタマーカー変数の現在の値を使用して実行します。この関数は,SQL文を1回の実行で発行できる最も早い方法です。
(2) 形式
-
SQLExecDirectの場合
SQLRETURN SQLExecDirect ( SQLHSTMT StatementHandle, /* In */ SQLCHAR * StatementText, /* In */ SQLINTEGER TextLength /* In */ )
-
SQLExecDirectWの場合
SQLRETURN SQLExecDirectW ( SQLHSTMT StatementHandle, /* In */ SQLWCHAR * StatementText, /* In */ SQLINTEGER TextLength /* In */ )
(3) 引数
- StatementHandle:
-
ステートメントハンドルを指定します。
この関数を実行する前にSQLAllocHandleの*OutputHandlePtrで出力された値を指定します。
- StatementText:
-
実行するSQL文字列を指定します。NULLポインタは指定できません。必ず1文字以上の文字列を指定してください。SQL文字列中に,注釈(/*〜*/)は指定できませんが,インデクス指定(/*>>〜<<*/)などは指定できます。
- TextLength:
-
*StatementTextの長さを指定します。指定した値によって次の表のように扱われます。
TextLengthに指定された値
TextLengthの扱い
0より大きい整数値
*StatementTextの先頭から指定されたデータ長(単位:SQLExecDirectの場合はバイト長,SQLExecDirectWの場合は文字数)が有効になります。
SQL_NTS
TextLengthの値は無視され,*StatementTextの先頭からNULLまでが有効になります。
(4) 戻り値
SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_NO_DATA,SQL_ERROR,SQL_NEED_DATAまたはSQL_INVALID_HANDLEが返されます。
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
01001 |
カーソル操作の競合 |
× |
|
01003 |
集合関数でナル値が削除された |
× |
|
01004 |
文字列データの右側が切り捨てられた |
○ |
|
01006 |
特権が破棄されない |
× |
|
01007 |
特権が与えられない |
× |
|
01S02 |
オプション値の変更 |
× |
|
01S07 |
小数点以下切り捨て |
× |
|
07002 |
COUNTフィールドが不正 |
SQLBindParameterに指定されたパラメタの数が?パラメタの数と不一致です。 |
○ |
07006 |
データ型属性の制限違反 |
− |
× |
07S01 |
デフォルトパラメタの不正使用 |
× |
|
08003 |
接続が存在しない |
○ |
|
08S01 |
通信リンク失敗 |
× |
|
21S01 |
挿入する値の一覧と列の一覧の不一致 |
× |
|
21S02 |
導出したテーブルの次数が列の一覧と不一致 |
× |
|
22001 |
文字列データの右側が切り捨てられた |
○ |
|
22002 |
必要な標識変数が提供されない |
× |
|
22003 |
数値が範囲外である |
○ |
|
22007 |
無効な日付時刻形式 |
○ |
|
22008 |
日付時刻フィールドのオーバフロー |
○ |
|
22012 |
ゼロ除算 |
× |
|
22015 |
間隔フィールドのオーバフロー |
× |
|
22018 |
キャスト指定に対する無効な文字値 |
○ |
|
22019 |
無効なエスケープ文字 |
× |
|
22025 |
無効なエスケープシーケンス |
× |
|
23000 |
整合性の制約違反 |
× |
|
24000 |
無効なカーソル状態 |
○ |
|
34000 |
無効なカーソル名 |
× |
|
3D000 |
無効なカタログ名 |
× |
|
3F000 |
無効なスキーマ名 |
× |
|
40001 |
直列化の失敗 |
× |
|
40003 |
ステートメントの完了が不明 |
× |
|
42000 |
構文エラーまたはアクセス違反 |
× |
|
42S01 |
ベーステーブルまたはビューがすでに存在する |
× |
|
42S02 |
ベーステーブルまたはビューが見つからない |
× |
|
42S11 |
インデクスがすでに存在する |
× |
|
42S12 |
インデクスが見つからない |
× |
|
42S21 |
列がすでに存在する |
× |
|
42S22 |
列が見つからない |
× |
|
44000 |
WITH CHECK OPTION違反 |
× |
|
5C002 |
文字コードの変換エラー |
変換できない文字コードを検出しました。 |
○ |
5C036 |
データ変換エラー |
設定要求があった入力データの指定内容が誤っています。 |
○ |
5C041 |
データ型未サポートエラー |
ドライバは指定されたデータ型をサポートしていません。 |
○ |
5C051 |
SQL文のテキスト文字列の長さが,16,000,000文字を超えた |
SQL文のテキスト文字列が16,000,000文字以下の場合でも,ドライバマネージャの文字コード変換によって16,000,000文字を超えることがあります。このときも,このSQLSTATEが返されます。 |
○ |
HY000 |
一般エラー |
− |
× |
HY001 |
メモリ割り当てエラー |
○ |
|
HY003 |
無効なCデータ型 |
○ |
|
HY004 |
無効なSQLデータ型 |
○ |
|
HY008 |
動作がキャンセルされた |
× |
|
HY009 |
NULLポインタの不正使用 |
○ |
|
HY010 |
関数シーケンスエラー |
○ |
|
HY013 |
メモリ管理エラー |
○ |
|
HY014 |
無効な精度または無効なスケール値 |
○ |
|
HY090 |
無効な文字列長または無効なバッファ長 |
○ |
|
HY104 |
無効な精度または無効なスケール値 |
○ |
|
HY105 |
無効なパラメタの種類 |
× |
|
HY109 |
無効なカーソル位置 |
× |
|
HYC00 |
オプション機能は実装されていない |
○ |
|
HYT00 |
タイムアウト終了 |
× |
|
HYT01 |
接続タイムアウト終了 |
× |
|
IM001 |
ドライバはこの関数をサポートしていない |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
-
Microsoft Access Version 2.0に対応する処理は未サポートです。
-
ブックマーク機能は未サポートです。