我試圖通過調用存儲過程來獲得一個名稱。在SQL Server中調用存儲過程來獲取一個Unicode字符串
SQL代碼:
create procedure GetName
@ID int,
@name nvarchar(32) output
as
select @name=name from SalesInfo where [email protected]
C代碼
...
SQLRETURN rc;
SQLLEN cbParam = SQL_NTS;
int ID = 1;
wchar_t name[32];
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, &ID, 0, NULL);
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT_OUTPUT, SQL_C_WCHAR, SQL_WCHAR, SQL_DESC_LENGTH, 0, name, sizeof(name), &cbParam);
rc = SQLExecDirect(hstmt, TEXT("{call GetName(?,?)}"), SQL_NTS);
- 我接收到的字符串,但有一個錯誤信息, '字符串數據,右截斷'
- 的字符串是用空白填充,如「名稱」
得到很多命中您需要增加您的nvarchar()的大小,以便它不填充大於32的字符串 – Xerxes 2013-04-28 06:46:42