- --员工表
- create table t_employee(
- id number(10) primary key,
- name varchar2(20),
- age number(3),
- salary number(10),
- deptid number(10)
- );
- --部门表
- create table t_dept(
- id number(10) primary key,
- name varchar2(20)
- );
- --存储过程 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)“配置” --“数据源”设置数据源
2)“配置”---“参数” 增加两个参数对应存储过程的输入参数,
参数名分别是 in_deptid和in_age
2)“配置”--“数据集”--“增加”--数据集类型选“存储过程” ,打开了存储过程数据集窗口
3) 定义tab填入:{call mypackage.EMP_TJ(?,?,?)};
参数tab中增加3个参数:第一个参数---参数表达式值in_deptid,其余默认
第二个参数---参数表达式值in_age,其余默认
第三个参数---参数表达式值@@result,结果类型为游标,参数模式为输出参数,其余默认;
这样就得到了数据集,假定这里数据集名是ds1,其有两列分别是in_deptid和in_age。
4)在报表单元格中就可以像使用SQL取数据集一样使用存储过程的数据集了。
附件中的例子是从快逸报表网站上找的,地址忘了,就不标明了。