Crystal 报告未使用 Oracle 驱动程序从某些 Oracle 视图返回数据
Crystal Reports not returning data from some Oracle views using Oracle driver
我正在使用 Crystal Reports 2013 并安装了 Oracle ODAC 32 位和 64 位版本。如果我创建一个新报告并使用 "Oracle Server" 数据源,我可以从我有权访问的任何 table 中 select。但是,我发现我没有从部分(不是全部)视图中检索到任何数据。
查询在 SQL Plus 或 SQL Developer 中工作正常。查询使用 OLE DB 和 ODBC 等过时的驱动程序检索 Crystal 报告中的数据。
我找不到有效或无效的视图之间的共性。我测试过的所有视图都属于同一个模式。它们都涉及属于第三个模式的 tables——也就是说,我以 USER1 身份登录,从属于 USER2 的视图中查询,该视图从属于 USER2 和 USER3 的 tables 中提取数据。为了在 table 上创建一个视图并使该视图可供其他人使用,Oracle 需要 SELECT WITH GRANT OPTION 权限,该权限已到位。同样,查询在其他 SQL 工具中运行良好。
更新:我尝试以视图所有者身份登录,但无法查询它们。我尝试以视图所有者 (user2) 和 Crystal 报告所有者 (user1) 的身份查询基础 tables。两个用户都能够查询基础 tables。视图本身似乎是问题所在。
我正在研究有效视图和无效视图之间的差异。当我发现不起作用的视图都使用引用列位置的 ORDER BY 子句时,我很乐观(例如:ORDER BY 2、1)。我尝试重写 ORDER BY 以使用列名。没用。尝试删除 ORDER BY 子句。没用。回到绘图板。
我发现问题在于 Oracle 视图使用的是 Oracle 特定的非标准 SQL。除了上面提到的 ORDER BY 2, 1
之外,WHERE clause
中还有一个隐式日期转换,例如
WHERE date_col = '01-JAN-2016'
当我添加 TO_DATE
函数时:
WHERE date_col = TO_DATE ('01-JAN-2016', 'dd-MON-yyyy')
Crystal 报告 能够查询视图。
我正在使用 Crystal Reports 2013 并安装了 Oracle ODAC 32 位和 64 位版本。如果我创建一个新报告并使用 "Oracle Server" 数据源,我可以从我有权访问的任何 table 中 select。但是,我发现我没有从部分(不是全部)视图中检索到任何数据。
查询在 SQL Plus 或 SQL Developer 中工作正常。查询使用 OLE DB 和 ODBC 等过时的驱动程序检索 Crystal 报告中的数据。
我找不到有效或无效的视图之间的共性。我测试过的所有视图都属于同一个模式。它们都涉及属于第三个模式的 tables——也就是说,我以 USER1 身份登录,从属于 USER2 的视图中查询,该视图从属于 USER2 和 USER3 的 tables 中提取数据。为了在 table 上创建一个视图并使该视图可供其他人使用,Oracle 需要 SELECT WITH GRANT OPTION 权限,该权限已到位。同样,查询在其他 SQL 工具中运行良好。
更新:我尝试以视图所有者身份登录,但无法查询它们。我尝试以视图所有者 (user2) 和 Crystal 报告所有者 (user1) 的身份查询基础 tables。两个用户都能够查询基础 tables。视图本身似乎是问题所在。
我正在研究有效视图和无效视图之间的差异。当我发现不起作用的视图都使用引用列位置的 ORDER BY 子句时,我很乐观(例如:ORDER BY 2、1)。我尝试重写 ORDER BY 以使用列名。没用。尝试删除 ORDER BY 子句。没用。回到绘图板。
我发现问题在于 Oracle 视图使用的是 Oracle 特定的非标准 SQL。除了上面提到的 ORDER BY 2, 1
之外,WHERE clause
中还有一个隐式日期转换,例如
WHERE date_col = '01-JAN-2016'
当我添加 TO_DATE
函数时:
WHERE date_col = TO_DATE ('01-JAN-2016', 'dd-MON-yyyy')
Crystal 报告 能够查询视图。