J'ai un insert dans une table utilisant ODBC 3.0 sur Oracle 10g qui échoue et je ne sais pas pourquoi. La base de données est sur Windows Server 2003. Le client est sur Windows XP.La liaison int64 (SQL_BIGINT) en tant que paramètre de requête provoque une erreur lors de l'exécution dans Oracle 10g ODBC
Le tableau:
CREATE TABLE test (testcol NUMBER(20,0) NULL);
Les appels 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
réussit mais SQLExecute
échoue. Il n'y a pas de message de diagnostic.
J'ai dû utiliser l'int64 pour écrire une chaîne et la lier en tant que chaîne. Est-ce la seule façon de lier un int64?
Je reçois un échec similaire lors de l'extraction de données à partir d'une instruction select avec une variable SQL_C_SBIGINT liée. Le message d'erreur est plus descriptif, mais pas très utile: SQLSTATE = HY004, "Type de données SQL non valide". –
Je reçois aussi HY004, avec le pilote ODBC 11.2 d'Oracle. Va essayer les chaînes ... argh ... – bneal