快逸报表数据集类型采用存储过程介绍
快逸报表服务器提供了多种数据集类型供用户使用,有SQL检索、存储过程、复杂SQL 、Text文件、XML文件、内建数据、语义层视图等数据集类型。
本文以oracle数据库为例介绍一下数据集类型为存储过程的报表制作方法。
第一步:准备oracle存储过程
–员工表
create table t_employee(
id number(10) primary key,
name varchar2(20),
age number(3),
salary number(10),
deptid number(10)
);
–初始化员工表数据
insert into t_employee values(1001,’张三’,23,2400,001);
insert into t_employee values(1002,’李四’,24,2600,002);
insert into t_employee values(1003,’小王’,21,3000,002);
–部门表
create table t_dept(
id number(10) primary key,
name varchar2(20)
);
–初始化部门表数据
insert into t_dept values(001,’销售部’);
insert into t_dept values(002,’研发部’);
–存储过程 package
create or replace package mypackage AS TYPE mycursor IS REF CURSOR;
procedure EMP_TJ( in_deptid number,
in_age number,
allemps out mypackage.mycursor);
end mypackage;
–存储过程package body
create or replace package body mypackage is
procedure EMP_TJ(
in_deptid number,
in_age number,
allemps out mypackage.mycursor)
IS
BEGIN
open allemps for
SELECT id,name,age,salary,deptid FROM T_EMPLOYEE WHERE DEPTID=IN_DEPTID AND AGE>IN_AGE;
END EMP_TJ;
end mypackage;
存储过程说明:
1, 在数据库新建两张物理表(员工表、部门表),员工表包含员工ID、姓名、年龄、薪资及部门ID五个字段,部门表包括部门ID及部门名称。
2, 按照oracle建存储过程规则,建立存储过程EMP_TJ,其功能为根据输入的部门ID及员工年龄,查询返回员工ID、年龄、薪资及部门ID。查询条件为部门ID等于输入的部门ID,年龄大于输入年龄。
第二步:将编写好的存储过程设置为数据集并设置相应参数
1,新建报表,设置两个参数(depID,age),如下图:
2,设置报表数据集,如下图:
选择编辑,下一步。
下一步,参数设置。
确定后,报表数据集设置完成,如下图:
确定后,进入报表设计。
3, 使用设置好的存储过程数据集设计报表
接下来以下面这个报表模板为例,来演示存储过程数据集设计的报表,如图所示:
单元格表达式为:
A3:=ds1.select(id,false)
B3:=ds1.name
C3:=ds1.age
D3:=ds1.salary
E3:=ds1.depID
报表的浏览效果如下图(输入条件为,age=22、 depID=002):
到此,存储过程作为数据集的介绍已完成,从例子可以看出,使用存储过程作为数据集来做报表也是很简单的,同时使用存储过程来做报表,对于sql比较复杂的来说也能提高报表的运算性能。