润乾报表取数---存储过程方式

Sql代码    收藏代码
  1. --员工表  
  2. create table t_employee(  
  3. id number(10) primary key,  
  4. name varchar2(20),  
  5. age number(3),  
  6. salary number(10),  
  7. deptid number(10)  
  8. );  
  9.   
  10. --部门表  
  11. create table t_dept(  
  12. id number(10) primary key,  
  13. name varchar2(20)  
  14. );  
  15.   
  16. --存储过程 package  
  17. create or replace package mypackage AS TYPE mycursor IS REF CURSOR;  
  18.   
  19. procedure EMP_TJ( in_deptid number,  
  20.                   in_age number,  
  21.                   allemps out mypackage.mycursor);  
  22. end mypackage;  
  23. --存储过程package body   
  24. create or replace package body mypackage is  
  25. procedure EMP_TJ(  
  26.              in_deptid number,  
  27.              in_age number,  
  28.              allemps out mypackage.mycursor)  
  29. IS  
  30. BEGIN  
  31.  open allemps for  
  32.    SELECT id,name,age,salary,deptid FROM T_EMPLOYEE WHERE DEPTID=IN_DEPTID AND AGE>IN_AGE;  
  33. END EMP_TJ;  
  34. 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取数据集一样使用存储过程的数据集了。 

附件中的例子是从快逸报表网站上找的,地址忘了,就不标明了。

你可能感兴趣的:(润乾报表)