未声明的标识符SQL_SS_TABLE

时间:2015-09-22 14:33:27

标签: c++ sql-server-2012 odbc table-valued-parameters

我想使用ODBC在C ++中使用Table值参数。有许多用于与带有ODBC的TVP一起工作的间隙样本。例如here

一个非常好的功能是SQLbinparameter。从here表值参数,此函数应如下所示:

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

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是一种特定于驱动程序的类型。 SQL Server示例使用位于

sqlncli.h 头文件
  

C:\ Program Files \ Microsoft SQL Server \ 110 \ SDK \ Include

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

对" Viorel _"的信用;最初在MSDN论坛上回答此问题:Using new ODBC sql data typ SQL_SS_TABLE in c++

答案 1 :(得分:-1)

我猜你在Linux上试图使用这个功能,而最流行的linux ODBC包(unixODBC)根本不支持这个功能。

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