New Error Conditions

From InterBase

Go Up to Isc_dsql_batch_execute_immed


The following table shows the error codes that are returned by the isc_dsql_batch_execute_immed function.

Batch Update Error Codes
Error code Description

isc_string_too_large

Returned when the total length of all SQL statement strings (including NULL characters) exceeds 2 GB.

isc_dsql_select_in_batch

Returned when one of the SQL statements is found to be a SELECT statement.

Note that all statements prior to the SELECT will be executed.

The rows_affected argument for the SELECT statement will be set to -1.

The changes made by statements prior to the SELECT are not committed or rolled back. This needs to be done specifically by the application or driver.

The following examples explain how to execute two statements in a batch update: One INSERT statement, and one DELETE statement. Notice the individual statements do not need to be terminated with a semicolon.

The number of rows affected by each statement is stored in the array called rows. The array must contain one element for each SQL statement executed in the batch update.

Example 1: Preparing Buffers for a Batch Update

char *sql1 = “INSERT INTO DEPARTMENT (dept_no, department, head_dept) values (‘117’, ‘Field Office: Hong Kong’, ‘110’)”;

char *sql2 = “DELETE FROM DEPARTMENT WHERE dept_no = ‘117’”;

char *sql_statements[2];
ISC_ULONG rows[2] = {0, 0};

sql_statements[0] = sql1;
sql_statements[1] = sql2;

Next example shows how to execute the batch update.

Example 1: Executing a Batch Update

/* Start a transaction */
if(isc_start_transaction(status, &trans, 1, &DB, 0, NULL))
ERREXIT(status,1);

/* Submit the batch update */
if(isc_dsql_batch_execute_immed(status, &DB, &trans, 3, 2, sql_statements, &rows))
ERREXIT(status, 1);

/* Print results and end the transaction */
printf(“Returned rows from the batch command: %d, %d”, rows[0], rows[1]);
printf(“Done with isc_dsql_execute_immed\n”);
if(isc_commit_transaction(status, &trans))
ERREXIT(status, 1);

Advance To: