diff --git a/Data/ODBC/include/Poco/Data/ODBC/Binder.h b/Data/ODBC/include/Poco/Data/ODBC/Binder.h index 473691b29..92fc6f1ed 100644 --- a/Data/ODBC/include/Poco/Data/ODBC/Binder.h +++ b/Data/ODBC/include/Poco/Data/ODBC/Binder.h @@ -424,6 +424,8 @@ private: SQLLEN* pLenIn = new SQLLEN; *pLenIn = size; + // prevent SQLSTATE = HY104 "Invalid precision value" + SQLULEN columnSize = size ? size : 1; if (PB_AT_EXEC == _paramBinding) *pLenIn = SQL_LEN_DATA_AT_EXEC(size); @@ -435,7 +437,7 @@ private: SQL_PARAM_INPUT, SQL_C_BINARY, SQL_LONGVARBINARY, - (SQLUINTEGER) size, + columnSize, 0, pVal, (SQLINTEGER) size,