0
从SQL Server查询链接Oracle数据库服务器时遇到问题。我查询在Oracle中的视图和视图包含在WHERE子句中的功能:从Oracle客户端运行时链接服务器到Oracle数据库产生错误结果
WHERE someColumn = someFunction(anotherColumn)
查询返回的行数正确。从SQL服务器执行时,返回的结果很多。通过检查查询,我发现WHERE子句中的函数没有得到应用。这是我所能说的,因为我无法访问Oracle BOX。我正在使用OLE DB Oracle提供程序。
有什么可能导致这个问题?
您在链接服务器定义中使用OPENQUERY语法吗?我认为这是查询按原样传递给链接数据库的选项(在这种情况下,该函数应该在/由oracle执行时运行)。另一个选项(我忘记了语法)试图解析SQL,其中该函数可能被忽略。 – davek 2014-12-04 14:54:18
@davek我没有使用'OPENQUERY',我的查询看起来像'SELECT COUNT(*)FROM LinkedServer..Scheme.View',但我试图从'OPENQUERY'发出同样的查询,结果如下SELECT * FROM OPENQUERY(LinkedServer,SELECT COUNT(*)FROM View) – Dimt 2014-12-04 14:56:51
想到的唯一一件事就是追踪实际到达Oracle的内容(例如使用TKPROF),以查看函数是否以某种方式在途中被剥离出来。 – davek 2014-12-04 15:42:37