首页 > 解决方案 > Microsoft SQL Server 和 Oracle SQL Developer

问题描述

我在 Microsoft SQL Server Management Studio 18 中将 Oracle 数据库链接到我的 SQL Server。服务器对象 -> 链接服务器。

我有一条 SQL 语句,当我在 Oracle 开发人员工具/平台上运行时,它会按预期返回信息。但是当我在 SQL Server 上运行完全相同的查询时,它会返回不正确的结果(行和列中的实际值不匹配)。

我知道的。

有什么想法吗?

下面的查询示例。适用于 Oracle Developer 但不适用于 MSSQL

SELECT * FROM TABLE1
WHERE status = 'Deviation' and trunc(SRC_ROW_UPDT) BETWEEN TO_DATE('01/03/2020', 'DD/MM/YYYY') AND TO_DATE('10/12/2020','DD/MM/YYYY');

下面的查询示例。适用于 Oracle Developer 和 MSSQL

SELECT * FROM TABLE1
WHERE status = 'Deviation' and BATCHID = 'ThisBAtchID';

标签: sqlsql-serveroracle

解决方案


您不能在 SQL Server 调用中使用 ORACLE 特定函数,例如 TO_DATE。您必须使用 OPENQUERY 远程执行它们。MSDN 中的 OPENQUERY

SELECT * FROM OPENQUERY (OracleSvr, 'SELECT * FROM TABLE1
WHERE status = ''Deviation'' and trunc(SRC_ROW_UPDT) BETWEEN TO_DATE(''01/03/2020'', ''DD/MM/YYYY'') AND TO_DATE(''10/12/2020'',''DD/MM/YYYY'');');

推荐阅读