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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水晶报表可以连接oracle的存储过程吗相关的知识,希望对你有一定的参考价值。

水晶报表可以连接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;

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

Crystal报表中的动态列

我需要创建动态报告,如果在数据库中添加了列,那么列应该自动需要反映在水晶报告中。

我想知道水晶报告中是否可以使用动态列?

如果是的话......如何实现?

答案

据我所知,通过在db中添加一个列,您无法通过数据表获取水晶报告,但您可以通过存储过程获取它,但您必须拖放该字段。通过这个链接希望它会帮助你

Crystal report with Dynamic Column

以上是关于水晶报表可以连接oracle的存储过程吗的主要内容,如果未能解决你的问题,请参考以下文章

水晶报表问题 我现在有配电室的全部数据 怎么把‘合计/平均’ 在不改存储过程的情况下获得这个数据。

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

oracle存储过程中,调用同义词报表和视图不存在。

无法打开水晶报表

即时生成水晶报表

Oracle如何创建存储过程和如何调用存储过程