Я пытаюсь передать параметр таблицы в качестве параметра в хранимой процедуре с использованием ODBC. Я следовал примеры из MSDN, но получить следующее сообщение об ошибке, когда я звоню SQLBindParameter:Ошибка привязки параметра table-valued при использовании ODBC, C++
HY004 [Microsoft] [ODBC SQL Server Driver] Invalid SQL тип данных
Вот мой код ,
//Allocate stament handle
SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
//Prep command
SQLPrepare(hStmt, (SQLCHAR*)"{call myStoredProc(?)}", SQL_NTS)
//Variables
const int arraySize = 2;
const int varcharSize = 30;
SQLCHAR *myUserDefTableName = (SQLCHAR *) "myUserDefTableName";
SQLLEN myUserDefTableInd = 0;
//bind table item
int result = SQLBindParameter(hStmt,
1,// ParameterNumber
SQL_PARAM_INPUT,// InputOutputType
SQL_C_DEFAULT,// ValueType
SQL_SS_TABLE,// Parametertype
(SQLINTEGER)arraySize,// ColumnSize - for a TVP this the row array size
0,// DecimalDigits - for a TVP this is the number of columns in the TVP
(SQLPOINTER)myUserDefTableName,// ParameterValuePtr - for a TVP this is the type name of the TVP
SQL_NTS,// BufferLength - for a TVP this is the length of the type name or SQL_NTS
&myUserDefTableInd);// StrLen_or_IndPtr - for a TVP this is the number of rows available
//bind columns for the table-valued parameter
//and execute command
...
Я также нашел это на MSDN:
Таблица многозначных столбец параметр не может быть связан как тип SQL_SS_TABLE. Если SQLBindParameter вызывается с параметром ParameterType, установленным в SQL_SS_TABLE, возвращается SQL_ERROR и создается диагностическая запись с SQLSTATE = HY004, «Недопустимый тип данных SQL». Это также может происходить с SQLSetDescField и SQLSetDescRec.
Но я пытаюсь связать элемент таблицы, а не столбцы таблицы. Это, по-видимому, прямо противоречит тому, что указано в их примерах кода. Я не уверен, почему эта ошибка возникает. Есть идеи?
Большое спасибо.