Я хотел бы работать с табличным параметром в C ++, используя ODBC. Существует множество интересных примеров работы с TVP с ODBC. Например Вот
Очень хорошая функция SQLbinparameter. От Вот для параметра Table Valued эта функция должна выглядеть так:
r = SQLBindParameter(hstmt,
2,// ParameterNumber
SQL_PARAM_INPUT,// InputOutputType
SQL_C_DEFAULT,// ValueType
SQL_SS_TABLE,// Parametertype
ITEM_ARRAY_SIZE,// ColumnSize: For a table-valued parameter this is the row array size.
0,// DecimalDigits: For a table-valued parameter this is always 0.
TVP,// ParameterValuePtr: For a table-valued parameter this is the type name of the
//table-valued parameter, and also a token returned by SQLParamData.
SQL_NTS,// BufferLength: For a table-valued parameter this is the length of the type name or SQL_NTS.
&cbTVP);// StrLen_or_IndPtr: For a table-valued parameter this is the number of rows actually use
Но я получаю ошибку: error C2065: SQL_SS_TABLE undeclared identifier
что я должен сделать, чтобы решить эту проблему?
Я собираюсь догадаться, что вы пытаетесь использовать эту функцию в Linux, и самый популярный пакет ODBC для Linux (unixODBC) просто не поддерживает эту функцию.
Существует вероятность того, что если вы используете официальный драйвер Microsoft (драйвер Microsoft ODBC для SQL Server в Linux), эта функция будет поддерживаться.
Это специфичный для водителя тип. Примеры SQL Server используют файле sqlncli.h заголовочный файл, расположенный в
C: \ Program Files \ Microsoft SQL Server \ 110 \ SDK \ Включить
Определяет SQL_SS_TABLE
вместе с другими типами драйверов SQL Server 2012. Включение этого файла устранит ошибку необъявленного идентификатора.
Кредиты «Viorel_» для первоначального ответа на этот вопрос на форумах MSDN: Используя новый ODBC SQL тип данных SQL_SS_TABLE в C ++