FineReport调用存储过程

本文介绍了如何在FineReport中调用Oracle存储过程来解决动态表名查询的问题。通过创建带参数的存储过程,利用游标遍历查询结果集,实现了根据ID查询多个数据库表名并获取数据。最后,详细讲述了在FineReport中配置数据连接、创建数据库查询以及调用存储过程生成报表的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  总结一下本人在项目中遇到的问题,如何在数据库表名未知且作为一种查询条件的情况下查询出数据集,仅能通过FineReport+Oracle实现。

  首先分析这个问题的条件和要求:

    条件:只有一个ID,依靠这个ID能查询出一个数据库表名的集合(表名是通过各种字段拼接起来的)

    要求:要遍历这个数据库表名集合查询出对应的数据

  FineReport即帆软,可以制作模版,通过传入变量执行模版中的SQL来生成报表。但是我无法将一个数据库表名的集合传入帆软模版,这样只能通过帆软本身查出数据库表名的集合。在有限的时间里我了解到要实现这样的功能最直接的方法就是采用Oracle的存储过程。通过各种百度、摸索最终实现了FineReport调用存储过程。总结如下。

一.存储过程(参数,变量,游标)

1.测试表:

2.带参数的存储过程

2.1创建一个存储过程:在Procedures文件夹右键New

2.2带参数的存储过程

create or replace procedure test(param1 in varchar2, item out sys_refcursor) as
begin
       open item for select * from TT_CLASS_20160912 tt where tt.length = param1;
end;

这里创建的是一个名为“test”的存储过程,有两个参数,param1为输入参数,item为输出参数,从“in”和“out”就可以看出来,“varchar2”和“sys_refcursor”为参数类型,其中“sys_refcursor”为游标,其实就是一个数据集合。

F8执行一次就会在Oracle里创建一个存储过程,实际上是一个编译过程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值