我想使用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
我应该怎么做来解决这个问题?
2条答案
按热度按时间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++
ia2d9nvy2#
我猜您正试图在Linux上使用此特性,而最流行的linux ODBC包(unixODBC)根本不支持此特性。
如果您使用正式的Microsoft驱动程序(用于Linux上SQL Server的Microsoft ODBC驱动程序),则可能会支持此功能。