ODBC Driver for Teradata

Build 24.0.9062

バッチ処理

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

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "INSERT INTO \"CData\".\"dbo\".NorthwindProducts (ProductName) VALUES (?)", SQL_NTS); 

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

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

一括更新

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

SQLHSTMT pHstmt = NULL;
const int MAX_UPDATE_COUNT = 2;
const int MAX_BUFFER_SIZE = 100;
char ProductIdArray[MAX_UPDATE_COUNT][MAX_BUFFER_SIZE] = { 0 };
char ProductIdArray[MAX_UPDATE_COUNT][MAX_BUFFER_SIZE] = { 0 };
SQLLEN cbProductIdArray[MAX_UPDATE_COUNT] = { 0 };
SQLLEN cbProductIdArray[MAX_UPDATE_COUNT] = { 0 };
...
retcode = SQLSetStmtAttr(pHstmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)MAX_UPDATE_COUNT, 0);
char *ProductName1 = "Jon Doe", *ProductName2 = "Jane Doe";
char *ProductId1 = "ProductId1", *ProductId2 = "ProductId2";
cbProductNameArray[0] = strlen(ProductName1);
cbProductNameArray[1] = strlen(ProductName2);
cbProductIdArray[0] = strlen(ProductId1);
cbProductIdArray[1] = strlen(ProductId2);
memcpy(ProductNameArray[0], ProductName1, strlen(ProductName1));
memcpy(ProductNameArray[1], ProductName2, strlen(ProductName2));
memcpy(ProductIdArray[0], ProductId1, strlen(ProductId1));
memcpy(ProductIdArray[1], ProductId2, strlen(ProductId2));
retcode = SQLBindParameter(pHstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, ProductNameArray, MAX_BUFFER_SIZE, cbProductNameArray);
retcode = SQLBindParameter(pHstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, ProductIdArray, MAX_BUFFER_SIZE, cbProductIdArray);

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "UPDATE \"CData\".\"dbo\".NorthwindProducts SET ProductName = ? WHERE ProductId = ?", SQL_NTS); 

一括削除

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

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

retcode = SQLExecDirect(pHstmt, (SQLCHAR*) "DELETE FROM \"CData\".\"dbo\".NorthwindProducts WHERE ProductId = ?", SQL_NTS); 

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