From: Kirill M. <kir...@on...> - 2009-08-03 10:21:53
|
Hi, all. See following code: int main() { SQLHENV envH; SQLHDBC dbcH; SQLHSTMT statH; SQLRETURN ret; SQLCHAR rstr[1024]; int a1[100]; int i; int rstrl; SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE, &envH); SQLSetEnvAttr(envH, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC2, 0); SQLAllocHandle(SQL_HANDLE_DBC,envH,&dbcH); ret=SQLDriverConnect(dbcH, NULL, "DSN=mytest;", SQL_NTS, rstr, sizeof(rstr), &rstrl, SQL_DRIVER_COMPLETE); if (!SQL_SUCCEEDED(ret)) { extract_error("SQLDriverConnect", dbcH, SQL_HANDLE_DBC); SQLFreeHandle(SQL_HANDLE_DBC,statH); SQLFreeHandle(SQL_HANDLE_ENV,envH); return 1; } SQLAllocHandle(SQL_HANDLE_STMT,dbcH,&statH); ret=SQLExecDirect(statH,"select * from test1",SQL_NTS); if (!SQL_SUCCEEDED(ret)) { extract_error("SQLExecDirect", statH, SQL_HANDLE_STMT); return 1; } for (i=0;i<100;i++) a1[i]=i*10; SQLSetStmtAttr(statH,SQL_ATTR_ROW_ARRAY_SIZE,2,0); SQLBindCol(statH,1,SQL_C_SLONG,a1,sizeof(int),NULL); ret=SQLBulkOperations(statH,SQL_ADD); if (!SQL_SUCCEEDED(ret)) { extract_error("SQLBulkOperations", statH, SQL_HANDLE_STMT); return 1; } SQLFreeHandle(SQL_HANDLE_STMT,statH); SQLFreeHandle(SQL_HANDLE_DBC,dbcH); SQLFreeHandle(SQL_HANDLE_ENV,envH); return 0; } It executes ok, but I always have SQL_ERROR on SQLBulkOperations. What's wrong? Can't think of anything. Works fine on MySQL. extract_error - it's just a function that prints out error text, but when SQLBulkOperations returns SQL_ERROR, SQLGetDiagRec returns error too and I don't know why error keeps happening. Thanks. |