我已經在Oracle 10g上使用ODBC 3.0插入表,並且我不知道爲什麼。數據庫位於Windows Server 2003上。客戶端位於Windows XP上。在Oracle 10g中執行綁定int64(SQL_BIGINT)會導致錯誤ODBC
表:
CREATE TABLE test (testcol NUMBER(20,0) NULL);
的ODBC電話:
SQLAllocHandle(SQL_HANDLE_STMT) = SQL_SUCCESS
SQLPrepare(INSERT INTO test (testcol) VALUES (?);) = SQL_SUCCESS
SQLINTEGER nStrLen = 0;
__int64 nInt64 = 99;
SQLBindParameter(hStatement, 1, SQL_PARAM_INPUT,
SQL_C_SBIGINT, SQL_BIGINT, 20, 0, &nInt64, 0, &nStrLen) = SQL_SUCCESS
SQLExecute() = SQL_ERROR
SQLGetDiagRec(1) = SQL_NO_DATA
SQLBindParameter
成功,但隨後SQLExecute
失敗。沒有診斷信息。
我不得不求助於將int64寫入字符串並將其作爲字符串進行綁定。這是綁定int64的唯一方法嗎?
從綁定SQL_C_SBIGINT變量的select語句中獲取數據時,我遇到了類似的失敗。該錯誤消息更具描述性,但仍不很有用:SQLSTATE = HY004,「無效的SQL數據類型」。 – 2010-07-15 17:19:54
我得到HY004以及Oracle的11.2 ODBC驅動程序。將嘗試字符串... argh ... – bneal 2011-01-20 23:23:47