我正在使用 SSRS (2k5) 报告来自 oracle 的数据。该报告的目的是对数据进行大约 100 次检查(完成后),以查看其输入是否正确(以及我们的软件是否按预期运行)。为了实现这一点,我创建了一个包和管道函数来实现 WITH 子句。 Oracle 中内置的包大致如下所示:
WITH A as (select stuff from X), B as (select stuff from Y join X), C as (select stuff from Z join X)Subquery1UnionSubquery2Union...Subquery100
我使用 Table() 直接从 SSRS 调用这个包函数。一切正常。但是,如果我在当天晚些时候运行它,则会收到一条错误消息:



但是,如果我打开 Oracle SQLDeveloper,然后运行该函数然后返回到 SSRS,一切都会运行良好(一段时间)。

我意识到它可能对我嵌套的 WITH 子句感到生气,但是是什么导致它工作了一段时间,然后很快就失败了?请注意,它始终适用于 SQLDeveloper。

提前感谢你的帮助!

最佳答案

您的问题是您使用(在 SSRS 内部)连接到 Oracle 的客户端(或可能是客户端中的驱动程序)版本可能不支持 WITH 子句中的函数调用。

在 9i 客户端中,WITH 子句没有完全正常运行,我怀疑连接到 Oracle 的客户端(即使它不是 9i 客户端)仍然没有完全正常运行。

您必须:

1) 在 SSRS 中升级 Oracle 客户端(或驱动程序)(如果可能的话)
2) 升级您的 SSRS 版本(如果不是最新版本,但请先检查是否值得升级)
3) 在没有 WITH 子句的情况下重写您的查询,并改用内联 View 。

另一种选择是创建所需数据的数据库 View 并在您的选择语句中引用它们,这并不理想但可能是一个选项。

希望能帮助到你...

关于Oracle WITH 子句导致 SSRS 中的问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9691384/

10-14 10:40