SQLBulkOperations() - 行のセットの追加、更新、削除、またはフェッチ
SQLBulkOperations() で、新しい行を現行照会の動的カーソルで関連付けた基本表やビューに追加できます。
SQLBulkOperations() の ODBC 仕様
| ODBC 仕様レベル | X/Open CLI CAE 仕様 | ISO CLI 仕様 |
|---|---|---|
| 3.0 | はい | はい |
構文
SQLRETURN SQLBulkOperations (
SQLHSTMT StatementHandle,
SQLSMALLINT Operation); 関数引数
次の表は、この関数のそれぞれの引数ごとに、 データ・タイプ、用途、および説明を示しています。
| データ・タイプ | 引数 | 使用 | 説明 |
|---|---|---|---|
| SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル。 |
| SQLSMALLINT | 操作 | 入力 | 実行する操作: SQL_ADD。 Db2 ODBC は以下の操作をサポートしていません。
|
使用法
SQLBulkOperations() を呼び出す前に、必要な一括操作がサポートされていることを確認する必要があります。 サポートを確認するには、 SQLGetInfo() に InfoTypeSQL_DYNAMIC_CURSOR_ATTRIBUTES1 または SQL_DYNAMIC_CURSOR_ATTRIBUTES2 の 以下の属性を検査して、サポートが使用できることを確認します。- SQL_CA1_BULK_ADD
- SQL_CA1_BULK_UPDATE_BY_BOOKMARK
- SQL_CA1_BULK_DELETE_BY_BOOKMARK
- SQL_CA1_BULK_FETCH_BY_BOOKMARK
一括操作が SQLBulkOperations() で実行される場合、列を無視できます。 列を無視するには、SQLBindCol() を呼び出し、列の長さとインディケーター・バッファー (pcbValue) を SQL_COLUMN_IGNORE に設定します。
SQLBulkOperations() 呼び出しの後:- SQL_ATTR_ROWS_FETCHED_PTR ステートメント属性が指すバッファーに、呼び出しで影響のある行数が含まれます。
- SQL_ATTR_ROW_STATUS_PTR ステートメント属性が指す行状況配列に、操作の結果が含まれます。
- ブロック・カーソル位置は未定義です。 アプリケーションは
SQLFetchScroll()を呼び出し、カーソル位置を設定します。 アプリケーションは、SQLFetchScroll()に FetchOrientation SQL_FETCH_FIRST、SQL_FETCH_LAST、またはSQL_FETCH_ABSOLUTEを引数として指定する必要があります。 カーソル位置は、アプリケーションが、SQLFetch()またはSQLFetchScroll()(FetchOrientation 引数を SQL_FETCH_PRIOR、SQL_FETCH_NEXT または SQL_FETCH_RELATIVE に設定) を呼び出す場合は、未定義です。
アプリケーションは以下を行う必要はありません。
SQLBulkOperations()を呼び出す前にSQLFetch()またはSQLFetchScroll()を呼び出します。- SQL_ATTR_ROW_OPERATION_PTR ステートメント属性を
SQLBulkOperations()呼び出しに対して設定します。 一括操作がSQLBulkOperations()で実行される場合、行を無視できます。
Operation 引数が SQL_ADD で、カーソルと関連付けされている照会の選択リストの中に同じ列への複数の参照がある場合、エラーが発生します。
行状況配列: 行状況配列には、SQLBulkOperations() の呼び出し後、行セット内の各行のデータの状況値が含まれます。 この配列は、SQLFetch() または SQLFetchScroll() が呼び出されないうちに SQLBulkOperations() が呼び出される場合、SQLBulkOperations() の呼び出しによって最初にデータを設定します。 SQL_ATTR_ROW_STATUS_PTR ステートメント属性は行状況配列を指します。 行状況配列内のエレメント数は、SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性で定義されたように、行セット内の行数と同じにする必要があります。
戻りコード
- SQL_SUCCESS
- SQL_SUCCESS_WITH_INFO
- SQL_NEED_DATA
- SQL_STILL_EXECUTING
- SQL_ERROR
- SQL_INVALID_HANDLE
診断
| SQLSTATE | 説明 | 説明 |
|---|---|---|
| 01 0 00 | 警告。 | 通知メッセージ。 (関数は、SQL_SUCCESS_WITH_INFO を返します。) |
| 0700 6 | 無効な変換です。 | Operation 引数が SQL_ADD で、アプリケーション・バッファー内のデータ値が結果セット内の列のデータ・タイプに変換できませんでした。 |
| 2 20 01 | ストリング・データの右側が切り捨てられました。 | 列への文字またはバイナリー値の割り当てが、 非ブランク文字 (文字の場合) または非 NULL 文字 (バイナリー数の場合) またはバイトに切り捨てられました。 |
| 2 20 03 | 数値が範囲外です。 | Operation 引数は SQL_ADD でした。 結果セット内の列へ数値を割り当てることによって数値全体 (一部とは対照的に) が切り捨てられました。 |
| 22008 | 無効な日付時刻形式または日付時刻フィールドがオーバーフローです。 | 次の条件のうちの 1 つが発生しています。
|
| 22018 | 割り当てにエラーがありました。 | 引数 Operation は SQL_ADD でした。 列に割り当てられたデータ値は、結果セットの関連付けられた列のデータ・タイプと互換性がありませんでした。 |
| 23000 | 整合性の制約違反。 | 整合性の制約に違反していました。 次の条件のうちの 1 つが発生しています。
|
| 24000 | カーソルの状態が無効です。 | StatementHandle が実行された状態にあったが、結果セットが StatementHandle と関連付けられていませんでした。 |
| 4000 1 | トランザクション・ロールバック。 | フェッチが実行されたトランザクションは、デッドロックを避けるために終了しました。 |
| 4000 3 | ステートメントが完了したか不明です。 | 関連付けられた接続が、この関数の実行中に失敗しました。 トランザクションの状態を判別できません。 |
| 42 xxx 1 | 構文エラーまたはアクセス規則違反。 | これらの SQLSTATE は、以下のエラーのいずれかを示しています。
|
| 44000 | WITH CHECK OPTION の違反。 | Operation 引数は SQL_ADD でした。 挿入または更新が、表示された表か表示された表から派生させられた表で実行されました。 表示された表は、WITH CHECK OPTION を指定することで作成されました。 挿入によって影響を受ける 1 つ以上の行が表示された表にもうありません。 |
| HY000 | 一般エラー。 | 特定の SQLSTATE のないエラーが発生しました。 SQLGetDiagRec() が *MessageText バッファー
に戻したエラー・メッセージに、エラーとその原因が記述されています。 |
| HY001 | メモリーの割り当てエラーです。 | DB2 ODBC が、関数を実行または完了させるのに必要なメモリーを割り当てることができませんでした。 プロセス・レベルのメモリーが、アプリケーション処理用に使い尽くされている可能性があります。 オペレーティング・システム構成を調べ、プロセス・レベルのメモリー制限を確認してください。 |
| HY010 | 関数のシーケンス・エラーです。 | 関数が、実行時データ (SQLParamData() または SQLPutData()) の操作中に呼び出されました。 |
| HY011 | この時点で無効な操作です。 | SQL_ATTR_ROW_STATUS_PTR ステートメント属性が、SQLFetch() または SQLFetchScroll() と SQLBulkOperations の呼び出しの間に設定されました。 |
| HY013 | 予期しないメモリーの処理エラーです。 | Db2 ODBC は、関数の実行または完了をサポートするために必要なメモリーにアクセスできませんでした。 |
| HY090 | ストリングまたはバッファーの長さが無効です。 | 次の条件のうちの 1 つが発生しています。
|
| HY092 | 無効な属性 ID です。 | Operation 引数は SQL_ADD でした。 SQL_ATTR_CONCURRENCY ステートメント属性は、SQL_CONCUR_READ_ONLY に設定されていました。 |
| HYC0 0 | ドライバーは使用できません。 | Db2 ODBC またはデータ・ソースは、Operation 引数で要求された操作をサポートしていません。 |
注:
|
||