c++ 未声明的标识符SQL_SS_TABLE

pxq42qpu  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(813)

我想使用ODBC在C++中使用表值参数。有很多有趣的例子可以用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
我应该怎么做来解决这个问题?

eanckbw9

eanckbw91#

它是驱动程序特定的类型,需要安装相应驱动程序的SDK并包含头文件。它与其他较新的SQL Server特定类型一起定义SQL_SS_TABLE

编辑2022年11月:

Microsoft已开始弃用ODBC Native Client,并建议切换到Microsoft ODBC Driver for SQL Server。使用这些SDK,include目录现在更改为:
C:\程序文件\Microsoft SQL Server\客户端SDK\ODBC\版本\SDK\包含
VERSION将被已安装的驱动程序版本替换,“Microsoft ODBC Driver 18 for SQL Server”的当前最新版本是180。此驱动程序的头文件是msodbcsql.h

旧答案:

SQL Server示例使用Native Client的sqlncli.h头文件,该文件位于
C:\程序文件\Microsoft SQL服务器\110\SDK\包含
感谢“Viorel_”最初在MSDN论坛上回答此问题:Using new ODBC sql data typ SQL_SS_TABLE in c++

ia2d9nvy

ia2d9nvy2#

我猜您正试图在Linux上使用此特性,而最流行的linux ODBC包(unixODBC)根本不支持此特性。
如果您使用正式的Microsoft驱动程序(用于Linux上SQL Server的Microsoft ODBC驱动程序),则可能会支持此功能。

相关问题