ODBC Driver for Salesforce Marketing Cloud

Build 23.0.8839

バッチ処理

CData ODBC Driver for Salesforce Marketing Cloud は、ODBC Batch API を介してSalesforce Marketing Cloud で一括ロードをサポートします。本製品 は、関連する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 StatusArray[MAX_INSERT_COUNT][MAX_BUFFER_SIZE] = { 0 };
SQLLEN cbStatusArray[MAX_INSERT_COUNT] = { 0 };
...
retcode = SQLSetStmtAttr(pHstmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)MAX_INSERT_COUNT, 0);
char *Status1 = "Jon Doe", *Status2 = "John";
cbStatusArray[0] = strlen(Status1);
cbStatusArray[1] = strlen(Status2);
memcpy(StatusArray[0], Status1, strlen(Status1));
memcpy(StatusArray[1], Status2, strlen(Status2));
retcode = SQLBindParameter(pHstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, StatusArray, MAX_BUFFER_SIZE, cbStatusArray);

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "INSERT INTO Subscriber (Status) VALUES (?)", SQL_NTS); 

新しいレコードのId を取得するには、LastResultInfo テーブルをクエリします。

SQLExecDirect(hstmt, (SQLTCHAR*)"SELECT * FROM LastResultInfo#TEMP", SQL_NTS);  
SQLTCHAR sId[20] = {0};
SQLLEN cbId = 0;
SQLBindCol(hstmt, 1, SQL_C_CHAR, sId, 20, &cbId);
SQLRETURN retcode = SQLFetch(hstmt);   

一括更新

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

SQLHSTMT pHstmt = NULL;
const int MAX_UPDATE_COUNT = 2;
const int MAX_BUFFER_SIZE = 100;
char IdArray[MAX_UPDATE_COUNT][MAX_BUFFER_SIZE] = { 0 };
char IdArray[MAX_UPDATE_COUNT][MAX_BUFFER_SIZE] = { 0 };
SQLLEN cbIdArray[MAX_UPDATE_COUNT] = { 0 };
SQLLEN cbIdArray[MAX_UPDATE_COUNT] = { 0 };
...
retcode = SQLSetStmtAttr(pHstmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)MAX_UPDATE_COUNT, 0);
char *Status1 = "Jon Doe", *Status2 = "John";
char *Id1 = "Id1", *Id2 = "Id2";
cbStatusArray[0] = strlen(Status1);
cbStatusArray[1] = strlen(Status2);
cbIdArray[0] = strlen(Id1);
cbIdArray[1] = strlen(Id2);
memcpy(StatusArray[0], Status1, strlen(Status1));
memcpy(StatusArray[1], Status2, strlen(Status2));
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, StatusArray, MAX_BUFFER_SIZE, cbStatusArray);
retcode = SQLBindParameter(pHstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, IdArray, MAX_BUFFER_SIZE, cbIdArray);

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "UPDATE Subscriber SET Status = ? WHERE Id = ?", SQL_NTS); 

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