16.7.1 SQLPrepare,SQLPrepareW
- 〈この項の構成〉
(1) 機能
SQL文をデータソースに送り,SQL文の前処理を実行します。
(2) 形式
-
SQLPrepareの場合
SQLRETURN SQLPrepare ( SQLHSTMT StatementHandle, /* In */ SQLCHAR * StatementText, /* In */ SQLINTEGER TextLength /* In */ )
-
SQLPrepareWの場合
SQLRETURN SQLPrepareW ( SQLHSTMT StatementHandle, /* In */ SQLWCHAR * StatementText, /* In */ SQLINTEGER TextLength /* In */ )
(3) 引数
- StatementHandle:
-
ステートメントハンドルを指定します。
- StatementText:
-
SQL文字列を指定します。SQL文字列中に,注釈(/*〜*/)は指定できませんが,インデクス指定(/*>>〜<<*/)などは指定できます。
- TextLength:
-
*StatementTextの長さを指定します(単位:SQLPrepareの場合はバイト長,SQLPrepareWの場合は文字数)。
StatementTextに指定したSQL文字列がNULL終端文字を保証している場合,SQL_NTSを指定できます。
(4) 戻り値
SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,またはSQL_INVALID_HANDLEが返されます。
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
01S02 |
オプション値の変更 |
× |
|
08S01 |
通信リンク失敗 |
× |
|
21S01 |
挿入する値の一覧と列の一覧の不一致 |
× |
|
21S02 |
導出したテーブルの次数が列の一覧と不一致 |
× |
|
22018 |
キャスト指定に対する無効な文字値 |
× |
|
22019 |
無効なエスケープ文字 |
× |
|
22025 |
無効なエスケープシーケンス |
× |
|
24000 |
無効なカーソル状態 |
× |
|
34000 |
無効なカーソル名 |
× |
|
3D000 |
無効なカタログ名 |
× |
|
3F000 |
無効なスキーマ名 |
× |
|
42000 |
構文エラーまたはアクセス違反 |
× |
|
42S01 |
ベーステーブルまたはビューがすでに存在する |
× |
|
42S02 |
ベーステーブルまたはビューが見つからない |
× |
|
42S11 |
インデクスがすでに存在する |
× |
|
42S12 |
インデクスが見つからない |
× |
|
42S21 |
列がすでに存在する |
× |
|
42S22 |
列が見つからない |
× |
|
5C002 |
文字コードの変換エラー |
変換できない文字コードを検出しました。 |
○ |
5C041 |
データ型未サポートエラー |
ドライバは指定されたデータ型をサポートしていません。 |
○ |
5C051 |
SQL文のテキスト文字列の長さが,16,000,000文字を超えた |
SQL文のテキスト文字列が16,000,000文字以下の場合でも,ドライバマネージャの文字コード変換によって16,000,000文字を超えることがあります。このときも,このSQLSTATEが返されます。 |
○ |
HY000 |
一般エラー |
− |
× |
HY001 |
メモリ割り当てエラー |
ドライバは,関数の実行または完了をサポートするメモリを割り当てられません。 |
○ |
HY008 |
動作がキャンセルされた |
− |
× |
HY009 |
NULLポインタの不正使用 |
StatementTextにNULLポインタが指定されています。 |
○ |
HY010 |
関数シーケンスエラー |
− |
○ |
HY013 |
メモリ管理エラー |
× |
|
HY090 |
無効な文字列長または無効なバッファ長 |
TextLengthに0以下で,SQL_NTS以外の値が指定されています。 |
○ |
HY117 |
接続がサスペンド中 |
− |
× |
HYC00 |
オプション機能は実装されていない |
× |
|
HYT00 |
タイムアウト終了 |
× |
|
HYT01 |
接続タイムアウト終了 |
× |
|
IM001 |
ドライバはこの関数をサポートしていない |
× |
|
IM017 |
非同期ポーリングが不正 |
× |
|
IM018 |
非同期実行が未完了 |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。