如何确定ODBC支持的连接操作符-交叉连接

本文关键字:操作符 交叉连接 连接 何确定 ODBC 支持 | 更新日期: 2023-09-27 18:06:46

给定一个ODBC连接字符串,我正在尝试确定此连接是否支持交叉连接。

目前我使用以下代码来确定支持的连接操作符:

(SupportedJoinOperators)connection.GetSchema("DataSourceInformation").Rows[0]["SupportedJoinOperators"]

但是这只给了我内连接,左连接,右连接和全连接。

例如,如果连接字符串使用microsoft文本驱动程序(.txt .csv),则支持的连接操作符为左和右,并且驱动程序实际上不支持交叉连接操作符(失败并提示语法错误)。

使用变通方法并不能保证正确的答案,正如我从这个链接中收集到的。

我还想尝试一个较低的级别,如使用Pinvoke与ODBC API,如SqlGetInfoSqlGetFunctions,但它似乎是一个死胡同。

任何帮助将非常感激!

如何确定ODBC支持的连接操作符-交叉连接

如果我做对了,那么使用ODBC API,您应该能够使用属性SQL_SQL92_RELATIONAL_JOIN_OPERATORS查询,测试SQL_SRJO_CROSS_JOIN。来自https://msdn.microsoft.com/en-us/library/ms711681%28v=vs.85%29.aspx:

的描述
3.0

SQL_SQL92_RELATIONAL_JOIN_OPERATORS (ODBC)

一个SQLUINTEGER位掩码,枚举SELECT语句中支持的关系连接操作符,如SQL-92中定义的。

必须支持此特性的SQL-92或FIPS一致性级别在每个位掩码旁边的括号中显示。

以下位掩码用于确定数据源支持哪些选项:

SQL_SRJO_CORRESPONDING_CLAUSE(中级)SQL_SRJO_CROSS_JOIN(全级)SQL_SRJO_EXCEPT_JOIN(中级)SQL_SRJO_FULL_OUTER_JOIN(中级)SQL_SRJO_INNER_JOIN (FIPS过渡级)SQL_SRJO_INTERSECT_JOIN(中级)SQL_SRJO_LEFT_OUTER_JOINSQL_SRJO_NATURAL_JOIN (FIPS过渡SQL_SRJO_RIGHT_OUTER_JOIN (FIPS过渡SQL_SRJO_UNION_JOIN (Full level)

SQL_SRJO_INNER_JOIN表示支持INNER JOIN语法,而不支持内部连接功能。支持INNER JOIN语法FIPS是过渡性的,而对内连接功能的支持是条目。