sql - Microsoft SQL Server 和 Oracle SQL Developer
问题描述
我在 Microsoft SQL Server Management Studio 18 中将 Oracle 数据库链接到我的 SQL Server。服务器对象 -> 链接服务器。
我有一条 SQL 语句,当我在 Oracle 开发人员工具/平台上运行时,它会按预期返回信息。但是当我在 SQL Server 上运行完全相同的查询时,它会返回不正确的结果(行和列中的实际值不匹配)。
我知道的。
- 我查询的表位于 Oracle 数据库中。
- 如果我在 WHERE 语句中排除任何涉及 DATE 的内容,我可以在 Oracle Developer 和 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';
解决方案
您不能在 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'');');
推荐阅读
- python - 在 Python 中编写 Discord 机器人 - 在 on_raw_reaction_add 中,我如何判断消息是否有图像?
- compression - HBase 2.3.5 无法启动 regionserver,错误日志:java.io.IOException: Compression codec snappy not supported, aborting RS construction
- go - G110:减压炸弹的潜在 DoS 漏洞 (gosec)
- 1password - 在 gopass 中保存环境变量
- python - python - 如何获取分层类名
- python - Django None 参数函数问题
- r - 数据框列表中每个数据框的列方差系数
- python - f2py 错误:导入模块时未定义符号
- python - 手动尝试拍照不起作用
- python - 使用 SQLAlchemy 获取子对象