ВСЕ,
Мой код выглядит следующим образом:
std::wstring ownerName = table->GetTableOwner();
SQLWCHAR *owner_name = new SQLWCHAR[ownerNameLen + 2];
int ownerNameLen = ownerName.length();
SQLLEN cbOwnerName = ownerNameLen == 0 ? SQL_NULL_DATA : SQL_NTS;
ret = SQLBindParameter( stmt_tableProp, 2, SQL_PARAM_INPUT, SQL_C_WCHAR, SQL_WCHAR, ownerNameLen, 0, owner_name, 0, &cbOwnerName );
Вызов SQLBindParameter успешно выполняется, когда имя_хозяина содержит фактические данные. Однако, если имя_хозяина равно », вызов не выполняется. И сообщение об ошибке, которое я получаю: «HY104 — Неверная точность или значение масштаба».
Согласно MSDN, похоже, что значение для размера должно быть размером столбца, а не размером фактического параметра. Это правильно? Или я должен передать 0 в качестве длины значения привязки?
Также есть эта страница который использует разные значения.
Может ли кто-нибудь пролить свет?
ТИА!
Параметр в SqlBindParameter, в который вы передаете значение ownerNameLen, должен содержать размер столбца, а не переменный размер. Это то, что требуется для типа данных столбца, с которым вы работаете (SQL_WCHAR) в соответствии с документами. Ниже приведена ссылка на документы. Ищите «Аргумент ColumnSize» и убедитесь сами.
Других решений пока нет …