使用 WITH 访问对 Oracle 的直通查询
Posted
技术标签:
【中文标题】使用 WITH 访问对 Oracle 的直通查询【英文标题】:Access pass-through query to Oracle using WITH 【发布时间】:2013-11-28 14:32:53 【问题描述】:我尝试在 TOAD 中运行它并且 sqldeveloper 没问题,但是当我在 Access 中使用直通查询运行时出现错误: "带有returnsRecords 属性的直通查询"
代码
With T1 as (select * from baasa),
T2 as (select * from lalala),
T4 as (select * from babab)
select distinct T1.C11 as something, T4.C5 as somewhere, T2.C2 as what
from T1,T2,T4
Where T1.C11=T4.C5 and T1.C10=T2.C2
或在小提琴中:http://sqlfiddle.com/#!4/84c06/2 谁能帮我?
【问题讨论】:
我承认我已经很长时间没有使用 Oracle问题。我确定 Access 传递查询可以在 SQL Server 上使用公用表表达式,所以我不明白为什么您也不应该在 Oracle 上使用它们。只是为了确认一下:您的查询确实返回记录,并且传递查询的Returns Records
属性设置为Yes
,对吗?
当我使用 sqldeveloper 时它返回了记录,但是当我使用访问时我得到了这个错误:“带有返回记录属性的传递查询”。我可以知道如何将其设置为是或否吗?谢谢
您所说的问题毫无意义。您的 SQL 因“ORA-00928:缺少 SELECT 关键字”而失败。检查 SQL Fiddle here 进行验证。此外,“带有返回记录属性的直通查询”不是有效的访问错误消息。如果您不告诉我们您真正在做什么,我们将无法帮助您。
@GordThompson 我在那里添加了sqlfiddle.com/#!4/84c06/2,很抱歉造成混淆。
@a_horse_with_no_name 它的 TOAD 哈哈..
【参考方案1】:
您的(修改后的)查询在 SQL Server 2008 R2 中运行良好,并且作为 Access 直通查询也运行良好。验证查询的Returns Records
属性是否设置为Yes
(如下所示)并尝试再次运行直通查询。正如我在对您的问题的最初评论中所说,如果它适用于 SQL Server,那么我看不出它为什么不适用于 Oracle。
【讨论】:
@Xarxas 您是否单击了功能区栏“查询类型”部分中的“传递”按钮? (再看一下上面的屏幕截图。它是以黄色突出显示的按钮。) 在 ODBC 连接 Str 我应该填写什么(我很抱歉有很多愚蠢的问题) @Xarxas 看看微软文章here。 还有什么奇怪的是,当我尝试将表导入本地数据库时,它工作正常。但是当我尝试通过 ODBC 连接到 oracle 时它没有工作...... :( 它现在可以工作了:) 我改变了它,删除了“with”,所以代码是:select * from (select * from table1) where something。谢谢!【参考方案2】:我很确定您的查询有语法错误:WHERE 子句之前没有 SELECT 或 FROM 子句...
【讨论】:
对不起,我在那里添加了。以上是关于使用 WITH 访问对 Oracle 的直通查询的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 对 Oracle VIA ODBC 的直通查询