我正在使用 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)
Subquery1
Union
Subquery2
Union
...
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/