未声明的标识符 SQL_SS_TABLE

undeclared identifier SQL_SS_TABLE

我想使用 ODBC 在 C++ 中使用 Table 值参数。有许多用于使用 ODBC 处理 TVP 的有趣示例。例如here

一个非常好的函数是 SQLbinparameter. From here 对于 Table 值参数这个函数应该是这样的:

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 上使用此功能,而最流行的 linux ODBC 包 (unixODBC) 根本不支持此功能。

如果您使用 Microsoft 官方驱动程序(Linux 上 SQL 服务器的 Microsoft ODBC 驱动程序),则有可能支持此功能。

它是一个特定于驱动程序的类型。 SQL 服务器示例使用位于

sqlncli.h 头文件

C:\Program Files\Microsoft SQL Server0\SDK\Include

它定义 SQL_SS_TABLE 以及其他 SQL Server 2012 驱动程序特定类型。包含此文件将解决未声明的标识符错误。

感谢 "Viorel_" 最初在 MSDN 论坛上回答了这个问题:Using new ODBC sql data typ SQL_SS_TABLE in c++