第九章 通过 ODBC 连接 SQL 网关 - 特定于实现的 ODBC 连接选项
特定于实现的 ODBC 连接选项
在定义 SQL
网关连接之前,应该确保了解外部数据库和数据库驱动程序的要求,因为这些要求会影响您定义连接的方式。以下选项并不适用于所有驱动程序实现。
Legacy Outer Join
启用旧式外连接语法 (Sybase
) 选项控制连接是否允许您使用旧式外连接。旧版外连接使用早于 SQL-92
标准的 SQL
语法。要了解外部数据库是否支持此类联接,请查阅该数据库的文档。
需要长数据长度
需要长数据长度选项控制连接如何绑定数据。此选项的值应与数据库驱动程序的 SQL_NEED_LONG_DATA_LEN
设置一致。要查找此设置的值,请使用 ODBC SQLGetInfo
函数。如果 SQL_NEED_LONG_DATA_LEN
等于 Y,则选择需要长数据长度选项;否则清除它。
支持 Unicode
流
支持 Unicode
流选项控制连接是否支持流中的 Unicode
数据,这些数据是 LONGVARCHAR
或 LONGVARBINARY
类型的字段。
- 对于
Sybase
,清除此复选框。如果使用Sybase
数据库,则通过 SQL 网关访问的所有字段应仅包含UTF-8
数据。 - 对于其他数据库,请选中此复选框。
默认情况下不使用分隔标识符
默认情况下不使用分隔标识符选项控制生成的例程中标识符的格式。
如果使用的数据库不支持分隔 SQL
标识符,请选中此复选框。目前包括以下数据库:
Sybase
Informix
MS SQL Server
如果使用任何其他数据库,请清除该复选框。所有 SQL
标识符都将被分隔。
Use COALESCE
Use COALESCE
选项控制当查询包含参数 (?
) 时如何处理查询,并且仅当查询参数等于 null
时才有效。
- 如果不选择“使用
COALESCE
”并且查询参数等于null
,则查询仅返回对应值为null
的记录。例如,考虑以下形式的查询:
SELECT ID, Name from LinkedTables.Table WHERE Name %STARTSWITH ?
如果提供的参数为空,则查询将仅返回名称为空值的行。
- 如果选择“使用
COALESCE
”,查询会将每个参数包装在COALESCE
函数调用中,该函数调用控制空值的处理方式。
然后,如果查询参数等于 null
,则查询本质上将该参数视为通配符。在前面的示例中,如果提供的参数为 null
,则此查询将返回所有行,这与典型 ODBC
客户端的行为一致。
是否选择此选项取决于您的偏好以及外部数据库是否支持 COALESCE
功能。
要查明外部数据库是否支持 COALESCE
函数,请查阅该数据库的文档。
复合行 ID
的转换
复合行 ID
中的转换选项控制在形成复合 ID
时如何处理非字符值。选择数据库支持的选项:
- 不转换非字符值 — 此选项不执行任何转换。仅当数据库支持将非字符值连接到字符值时,此选项才适用。
- 使用
CAST
— 此选项使用CAST
将非字符值转换为字符值。 - 使用
{fn Convert ...}
— 此选项使用{fn Convert ...}
将非字符值转换为字符值。
在所有情况下,ID
都用 ||
连接起来ID(或转换后的 ID
)之间。