水晶报表可以连接oracle的存储过程吗?

zhongguofulisha 2012-11-13 04:23:09
我们之前做报表是连接的SQL Server的存储过程。先数据库迁移到oracle。再去刷新存储过程时,会报错:语法错误或违反访问规则,如图所示。

我怀疑是因为调用SQL Server和调用Oracle的存储过程的规则不同。

请问各位大侠,水晶报表可以调用Oracle的存储过程吗?目前是可以建立与Oracle的连接的,就是建立数据库专家时,输入入参后,点击确定就出错误了。

存储过程的参数中有两个出参,都是游标类型,带出结果集的。

希望大家能给点意见。谢谢!
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongguofulisha 2012-11-28
  • 打赏
  • 举报
回复
自己答一下。安装了oracle客户端之后,再间ODBC数据源时,可以出现一个新的选项,就是安装的客户端的名字,用这个建的连接可以正常使用。
zhongguofulisha 2012-11-14
  • 打赏
  • 举报
回复
我不用ODBC连接方式,改用OLEDB连接的方式就可以通过了。但是多个入参又报错了……
zhongguofulisha 2012-11-14
  • 打赏
  • 举报
回复
引用 1 楼 gefangliang 的回复:
水晶报表中调用ORACLE存储过程有讲究,不是随便写一个在数据库中可以运行的存储过程就行的,一般有两种写法,一种是定义包,还有一种是直接写存储过程,实例: CREATE OR REPLACE PROCEDURE emp_test(cur IN OUT Sys_Refcursor,p_deptno IN emp.deptno%TYPE) AS BEGIN OPEN cur FOR SE……
我是用的这种出参游标啊。我的存储过程如下: create or replace PROCEDURE rpt_get_ams004 ( o_report_list OUT SYS_REFCURSOR, actor IN VARCHAR2, loc_type in VARCHAR2, province_code_id in NUMBER, field_office_no in VARCHAR2, loc_no in VARCHAR2 )AS BEGIN OPEN o_report_list FOR select STAFF_ID from RPT_GET_AMS004_TABLE; END rpt_get_ams004;
心灵彩虹 2012-11-14
  • 打赏
  • 举报
回复
水晶报表中调用ORACLE存储过程有讲究,不是随便写一个在数据库中可以运行的存储过程就行的,一般有两种写法,一种是定义包,还有一种是直接写存储过程,实例:

CREATE OR REPLACE PROCEDURE emp_test(cur IN OUT Sys_Refcursor,p_deptno IN emp.deptno%TYPE)
AS
BEGIN
OPEN cur FOR
SELECT empno,ename,job FROM emp WHERE deptno=p_deptno;
END;
看到有什么不同没,存储过程的参数中要有一个Sys_Refcursor类型的参数,这个类型是系统自带,直接可以使用。

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧