0

全部,

我的代码如下:

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 );

当 owner_name 包含实际数据时,对 SQLBindParameter 的调用成功。但是,如果 owner_name 为 '',则调用失败。我得到的错误信息是“HY104 - 无效的精度或比例值”。

根据 MSDN,看起来 size 的值应该是列的大小,而不是实际参数的大小。这个对吗?或者我应该传递 0 作为绑定值的长度?

此外,还有这个页面使用不同的值。

有人可以阐明一下吗?

蒂亚!

4

1 回答 1

1

您传递 ownerNameLen 值的 SqlBindParameter 中的参数应包含列大小,而不是可变大小。根据文档,这是您正在使用的列数据类型(SQL_WCHAR)所要求的。下面是文档的链接。查找“ColumnSize Argument”并亲自查看。

SqlBindParameter 文档

于 2017-07-18T12:55:29.440 回答