ODBC Driver for Azure Cosmos DB

Build 24.0.9062

バッチ処理

CData ODBC Driver for Azure Cosmos DB は、ODBC Batch API を介してAzure Cosmos DB で一括ロードをサポートします。本製品 は、関連するSQL データ操作ステートメントを1つのバルクAPI 要求に変換することによって同時に実行できます。アプリケーションのコードでは、本製品 は一連の入力とパラメータ化されたクエリに基づいてステートメントを実行します。

バッチ更新プロシージャ

バッチ更新を実行するには、次の手順を実行してください。

  1. ステートメント内の各パラメータのカラム値の配列を定義します。
  2. SQL_ATTR_PARAMSET_SIZE ステートメント属性を設定します。
  3. 各配列を各パラメータにバインドします。
  4. パラメータ化されたステートメントを実行します。

一括挿入

次のコードは、SQLSetStmtAttr、SQLBindParameter、およびSQLExecDirect を使って一括挿入を実行する方法を示します。

SQLHSTMT pHstmt = NULL;
const int MAX_INSERT_COUNT = 2;
const int MAX_BUFFER_SIZE = 100;
char CompanyNameArray[MAX_INSERT_COUNT][MAX_BUFFER_SIZE] = { 0 };
SQLLEN cbCompanyNameArray[MAX_INSERT_COUNT] = { 0 };
...
retcode = SQLSetStmtAttr(pHstmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)MAX_INSERT_COUNT, 0);
char *CompanyName1 = "Jon Deere", *CompanyName2 = "Caterpillar";
cbCompanyNameArray[0] = strlen(CompanyName1);
cbCompanyNameArray[1] = strlen(CompanyName2);
memcpy(CompanyNameArray[0], CompanyName1, strlen(CompanyName1));
memcpy(CompanyNameArray[1], CompanyName2, strlen(CompanyName2));
retcode = SQLBindParameter(pHstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, CompanyNameArray, MAX_BUFFER_SIZE, cbCompanyNameArray);

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "INSERT INTO [CData].[Entities].Customers (CompanyName) VALUES (?)", SQL_NTS); 

一括更新

更新するレコードの主キーの配列を指定する必要があります。次のコードは、SQLSetStmtAttr、SQLBindParameter、およびSQLExecDirect を使って一括更新を実行する方法を示します。

SQLHSTMT pHstmt = NULL;
const int MAX_UPDATE_COUNT = 2;
const int MAX_BUFFER_SIZE = 100;
char CityArray[MAX_UPDATE_COUNT][MAX_BUFFER_SIZE] = { 0 };
char _idArray[MAX_UPDATE_COUNT][MAX_BUFFER_SIZE] = { 0 };
SQLLEN cbCityArray[MAX_UPDATE_COUNT] = { 0 };
SQLLEN cb_idArray[MAX_UPDATE_COUNT] = { 0 };
...
retcode = SQLSetStmtAttr(pHstmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)MAX_UPDATE_COUNT, 0);
char *CompanyName1 = "Jon Deere", *CompanyName2 = "Caterpillar";
char *_id1 = "_id1", *_id2 = "_id2";
cbCompanyNameArray[0] = strlen(CompanyName1);
cbCompanyNameArray[1] = strlen(CompanyName2);
cb_idArray[0] = strlen(_id1);
cb_idArray[1] = strlen(_id2);
memcpy(CompanyNameArray[0], CompanyName1, strlen(CompanyName1));
memcpy(CompanyNameArray[1], CompanyName2, strlen(CompanyName2));
memcpy(_idArray[0], _id1, strlen(_id1));
memcpy(_idArray[1], _id2, strlen(_id2));
retcode = SQLBindParameter(pHstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, CompanyNameArray, MAX_BUFFER_SIZE, cbCompanyNameArray);
retcode = SQLBindParameter(pHstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, _idArray, MAX_BUFFER_SIZE, cb_idArray);

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "UPDATE [CData].[Entities].Customers SET CompanyName = ? WHERE _id = ?", SQL_NTS); 

一括削除

削除するレコードの主キーの配列を指定する必要があります。次のコードは、SQLSetStmtAttr、SQLBindParameter、およびSQLExecDirect を使って一括削除を実行する方法を示します。

 
SQLHSTMT pHstmt = NULL;
const int MAX_DELETE_COUNT = 2;
const int MAX_BUFFER_SIZE = 100;
char _idArray[MAX_DELETE_COUNT][MAX_BUFFER_SIZE] = { 0 };
SQLLEN cb_idArray[MAX_DELETE_COUNT] = { 0 };
...
retcode = SQLSetStmtAttr(pHstmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)MAX_DELETE_COUNT, 0);
char *_id1 = "_id1", *_id2 = "_id2";
cb_idArray[0] = strlen(_id1);
cb_idArray[1] = strlen(_id2);
memcpy(_idArray[0], _id1, strlen(_id1));
memcpy(_idArray[1], _id2, strlen(_id2));
retcode = SQLBindParameter(pHstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, _idArray, MAX_BUFFER_SIZE, cb_idArray);

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "DELETE FROM [CData].[Entities].Customers WHERE _id = ?", SQL_NTS); 

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062