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

 我来答
匿名用户
2017-02-27
展开全部

水晶报表可以连接oracle的存储过程,但是不是随便写一个在数据库中可以运行的存储过程就可以的。具体的步骤的话我不是特别清楚,现在很少用到水晶报表了,一般情况下用的都是finereport,这样的话就和题主稍微说下我现在用的工具的方法吧,应该是差不多的。

1、创建包

由于需要但会查询出来的数据集,需要在PL/SQL中创建一个package,这个包里面定义一个ref cursor类型,用于记录sql语句查询出来的结果集。如下图:

创建包的代码如下:

create or replace package pagingPackage as  

type paging_cursor is ref cursor;  

end pagingPackage; 

存储过程

编写存储过程,如下图:

具体代码如下:

create or replace procedure paging

(tableName in varchar2 ,--表名

pageSizes in number,--每页显示记录数

pageNow in number,--当前页

rowNums out number,--总记录数

pageNum out number,--总页数

paging_cursor out pagingPackage.paging_cursor) is

--定义部分

--定义sql语句,字符串

v_sql varchar2(1000);

--定义两个整数,用于表示每页的开始和结束记录数

v_begin number:=(pageNow-1)*pageSizes+1;

v_end number:=pageNow*pageSizes;

begin

--执行部分

v_sql:='select * from (select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where rn>='||v_begin;

--把游标和sql语句关联

open paging_cursor for v_sql;

--计算rowNums和pageNum

--组织一个sql语句

v_sql:='select count(*) from '||tableName;

--执行该sql语句,并赋给rowNums

execute immediate v_sql into rowNums;

--计算pageNum

if mod(rowNums,pageSizes)=0 then

pageNum := rowNums/pageSizes;

else

pageNum := rowNums/pageSizes+1;

end if;

end;

苍空月悬
2017-02-28 · TA获得超过177个赞
知道小有建树答主
回答量:454
采纳率:0%
帮助的人:495万
展开全部
水晶报表可以连接oracle的存储过程,但是不是随便写一个在数据库中可以运行的存储过程就可以的。
具体的步骤的话我不是特别清楚,现在很少用到水晶报表了,一般情况下用的都是finereport,这样的话就和题主稍微说下我现在用的工具的方法吧,应该是差不多的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式