Example 1 Sends a batch of parameters to the server without binding parameter arrays:
// Setting the SQL_ATTR_BATCH_PARAMS attribute to start // the batch sr = SQLSetConnectAttr(dbc, SQL_ATTR_BATCH_PARAMS, (SQLPOINTER)SQL_BATCH_ENABLED, SQL_IS_INTEGER); printError(sr, SQL_HANDLE_DBC, dbc); // Bind the parameters. This can be done once for the entire batch sr = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, l1, 0, &c1, l1, &l1); sr = SQLBindParameter(stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, l2, 0, buffer, l2, &l2); } // Run a batch of 10 for (int i = 0; i < 10; i++) { c1 = i; memset(buffer, 'a'+i, l2); sr = SQLExecDirect(stmt, insertStmt, SQL_NTS); printError(sr, SQL_HANDLE_STMT, stmt); }
Example 2 Ends and closes a batch:
// Setting the SQL_ATTR_BATCH_PARAMS attribute to end // the batch sr = SQLSetConnectAttr(dbc, SQL_ATTR_BATCH_PARAMS, (SQLPOINTER)SQL_BATCH_LAST_NO_DATA, SQL_IS_INTEGER); printError(sr, SQL_HANDLE_DBC, dbc); // Call SQLExecDirect one more time to close the batch // - Due to SQL_BATCH_LAST_NO_DATA, this will not // process the parameters sr = SQLExecDirect(stmt, insertStmt, SQL_NTS); printError(sr, SQL_HANDLE_STMT, stmt);