#ifdef SWITCH_HAVE_ODBC
SQLHSTMT stmt = NULL;
int result;
- char *err_str = NULL;
+ char *err_str = NULL, *err2 = NULL;
SQLLEN m = 0;
handle->affected_rows = 0;
}
if (SQLAllocHandle(SQL_HANDLE_STMT, handle->con, &stmt) != SQL_SUCCESS) {
+ err2 = "SQLAllocHandle failed.";
goto error;
}
if (SQLPrepare(stmt, (unsigned char *) sql, SQL_NTS) != SQL_SUCCESS) {
+ err2 = "SQLPrepare failed.";
goto error;
}
result = SQLExecute(stmt);
- if (result != SQL_SUCCESS && result != SQL_SUCCESS_WITH_INFO && result != SQL_NO_DATA) {
+ switch (result) {
+ case SQL_SUCCESS:
+ case SQL_SUCCESS_WITH_INFO:
+ case SQL_NO_DATA:
+ break;
+ case SQL_ERROR:
+ err2 = "SQLExecute returned SQL_ERROR.";
+ goto error;
+ break;
+ case SQL_NEED_DATA:
+ err2 = "SQLExecute returned SQL_NEED_DATA.";
+ goto error;
+ break;
+ default:
+ err2 = "SQLExecute returned unknown result code.";
goto error;
}
}
if (zstr(err_str)) {
- err_str = strdup((char *)"SQL ERROR!");
+ if (err2) {
+ err_str = strdup(err2);
+ } else {
+ err_str = strdup((char *)"SQL ERROR!");
+ }
}
if (err_str) {