Баг или фича, или я что-то не понимаю?
double d = 0.1; SQLRETURN r = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &d, 0, NULL);
в русской (ru_RU.UTF8) локали проходит нормально, но при последующем SQLExecute происходит ошибка, SQLGetDiagRec возвращает "[22P02]Error while executing the query; ERROR: неверный входной синтаксис для типа double, точность: "0,2""
если сделать LANG=С;export LANG и прогнать тот-же код, то все проходит хорошо.
если биндить параметр как строку:
string s = "0.1"; SQLRETURN r = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, s.length(), 0, (SQLCHAR*)s.c_str(), 0, NULL);
то вне зависимости от текущей локали - всё хорошо. В чём-же дело? Похоже на ошибку в ODBC подсистеме. Может стоит всегда биндить параметры как строки, если они внутри подсистемы ODBC, по-видимому, всё равно в строки превращаются?