}
#endif
- if ((rc = SQLPrepare(result->stmt, query, SQL_NTS)) != SQL_SUCCESS) {
- odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
- SQLFreeStmt(result->stmt, SQL_DROP);
- RETURN_FALSE;
- }
+ rc = SQLPrepare(result->stmt, query, SQL_NTS);
+ switch (rc) {
+ case SQL_SUCCESS:
+ break;
+ case SQL_SUCCESS_WITH_INFO:
+ odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
+ break;
+ default:
+ odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
+ RETURN_FALSE;
+ }
SQLNumParams(result->stmt, &(result->numparams));
SQLNumResultCols(result->stmt, &(result->numcols));
}
}
} else {
- if (rc != SQL_SUCCESS) {
- odbc_sql_error(result->conn_ptr->henv, result->conn_ptr->hdbc, result->stmt, "SQLExecute");
- RETVAL_FALSE;
- }
+ switch (rc) {
+ case SQL_SUCCESS:
+ break;
+ case SQL_NO_DATA_FOUND:
+ case SQL_SUCCESS_WITH_INFO:
+ odbc_sql_error(result->conn_ptr->henv, result->conn_ptr->hdbc, result->stmt, "SQLExecute");
+ break;
+ default:
+ RETVAL_FALSE;
+ }
}
if (result->numparams > 0) {
efree(params);
}
- if (rc == SQL_SUCCESS) {
+ if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO
+ || rc == SQL_NO_DATA_FOUND) {
RETVAL_TRUE;
}
rc = SQLGetInfo(result->conn_ptr->hdbc,SQL_MAX_CURSOR_NAME_LEN,
(void *)&max_len,0,&len);
- if (rc != SQL_SUCCESS) {
+ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
RETURN_FALSE;
}
RETURN_FALSE;
}
rc = SQLGetCursorName(result->stmt,cursorname,(SWORD)max_len,&len);
- if (rc != SQL_SUCCESS) {
+ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
char state[6]; /* Not used */
SDWORD error; /* Not used */
char errormsg[255];
#endif
rc = SQLExecDirect(result->stmt, query, SQL_NTS);
- if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
+ if (rc != SQL_SUCCESS
+ && rc != SQL_SUCCESS_WITH_INFO
+ && rc != SQL_NO_DATA_FOUND) {
/* XXX FIXME we should really check out SQLSTATE with SQLError
* in case rc is SQL_SUCCESS_WITH_INFO here.
*/