SQLBindParameter возвращает -1

ВСЕ,

Мой код выглядит следующим образом:

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 в качестве длины значения привязки?

Также есть эта страница который использует разные значения.

Может ли кто-нибудь пролить свет?

ТИА!

0

Решение

Параметр в SqlBindParameter, в который вы передаете значение ownerNameLen, должен содержать размер столбца, а не переменный размер. Это то, что требуется для типа данных столбца, с которым вы работаете (SQL_WCHAR) в соответствии с документами. Ниже приведена ссылка на документы. Ищите «Аргумент ColumnSize» и убедитесь сами.

SqlBindParameter doc

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]