如何在jasperreport中使用存储过程
Jasper Report 不能直接调用oracle的存储过程,因为存储过程不能返回标准的
sql结果集。作为一个替代解决方法,可以使用函数来从存储过程获取结果集。
为了能够用函数来获取存储过程的结果集,需要使用到临时表来暂存结果,然后
返回table类型的结果。
下面是示例步骤,供参考:
1. 创建临时表:
第一步,创建临时表暂存存储过程结果,这样Jasper Report就能够使用标准
sql通过存储函数来查询结果。创建临时表语句:
CREATE GLOBAL TEMPORARY TABLE “TEMP_PRESIDENTS” (
ID NUMBER(10) not null,
NAME VARCHAR(32) not null,
BIRTHDATE DATE not null,
PARTY char(1) not null
) ON COMMIT PRESERVE ROWS
2 创建存储过程
创建存储过程来处理获得所需数据。语句如下:
CREATE PROCEDURE “LOAD_TEMP_PRESIDENTS” (
partyParam CHAR )
as
begin
EXECUTE IMMEDIATE ‘TRUNCATE TABLE TEMP_PRESIDENTS’;
COMMIT;
INSERT INTO TEMP_PRESIDENTS
SELECT ID, NAME, BIRTHDATE, PARTY FROM PRESIDENTS WHERE PARTY = partyParam;
COMMIT;
end;
3. 测试存储过程:
call LOAD_TEMP_PRESIDENTS(‘D’);
select * from TEMP_PRESIDENTS;
4. 创建返回类型:
该返回类型用来从临时表返回结果。这个类型就是你在Jasper Report里面所描述的结果信息。
CREATE OR REPLACE TYPE “PRESIDENT_TYPE” AS OBJECT (
ID NUMBER(10),
NAME VARCHAR2(32),
BIRTHDATE DATE,
PARTY CHAR(1)
)
5. 创建表类型
这一步骤,我们基于上一步创建表类型。 这个“表”就是我们在Jasper Report里面做查询的那个表。这不是一个真实的表。
CREATE OR REPLACE TYPE “PRESIDENT_TYPE_TABLE” AS TABLE OF “PRESIDENT_TYPE”
6. 创建存储函数
CREATE OR REPLACE FUNCTION “PRESIDENTS_FUNC” (
partyParam CHAR
)
return PRESIDENT_TYPE_TABLE pipelined
is
PRAGMA AUTONOMOUS_TRANSACTION;
TYPE ref0 is REF CURSOR;
myCursor ref0;
out_rec PRESIDENT_TYPE := PRESIDENT_TYPE(0, null, null, null);
BEGIN
LOAD_TEMP_PRESIDENTS(partyParam);
open myCursor for
select id,
name,
birthdate,
party
from TEMP_PRESIDENTS;
LOOP FETCH myCursor into
out_rec.ID,
out_rec.NAME,
out_rec.BIRTHDATE,
out_rec.PARTY;
EXIT WHEN myCursor%NOTFOUND;
PIPE ROW(out_rec);
END LOOP;
CLOSE myCursor;
RETURN;
END;
7. 测试并使用存储函数
select * from table(PRESIDENTS_FUNC(‘D’))
通过以上步骤,我们就可以在Jasper Report里面使用了基于存储过程的标准查询了。
分享到:
相关推荐
在寻找如何将报表直接转换为图像的过程中,开发者考虑了JasperReport自带的`ImageServlet`类,但发现该类只能提取jasper文件中的特定图像,而无法将整个报表输出为图像。 接着,开发者转向了`JRGraphics2DExporter`...
JasperReport编码是指在Java应用程序中使用JasperReport生成报表的过程。这个过程主要包括以下几个步骤: 1. 加入Jar包:在项目中添加JasperReport的Jar包,包括jasperreports-5.6.1.jar、commons-logging-1.1.1....
在IT行业中,报表生成是企业应用中不可或缺的一部分,而...这个过程中,理解数据源的设置、子报告的嵌入以及WebWork与JasperReport的交互至关重要。不断实践和优化,你将能够创建出满足业务需求的高效报表系统。
在报表的填充过程中,这些Java类会与JRXML模板结合,生成最终的报表。 在实际操作中,我们可能需要以下步骤来实现子报表: 1. **设计子报表**:使用报表设计工具创建子报表的JRXML文件,定义其布局和数据绑定。 2....
JasperReport因其灵活性、可扩展性和高性能而广受好评,在企业级应用中有着广泛的应用。 ##### 1.1 JasperReports基本操作步骤 - **1.1.1 下载** 首先需要从官方网站或其他可信源下载JasperReport的最新版本。...
本文详细介绍了使用iReport和JasperReport开发柱状图的过程,包括确定数据源类型、开发数据源类、设计图表属性等步骤。作者分享了自己的实践经验,遇到的困难和解决方法,旨在帮助读者更好地理解和掌握iReport和...
在这个项目中,我们深入实践了JasperReport的各项功能,特别是在开发过程中如何利用它来生成和导出各种格式的图表,如图片和饼状图。 **一、JasperReport基础** JasperReport基于Java,它提供了丰富的API和模板...
在JasperReport中,我们可以使用“组”(Group)功能来实现动态表头。每个组都有自己的表头,当数据变化时,相应的表头会自动显示。例如,对于一个销售报表,可以按照地区、年份、季度等进行分组,每个级别的分组都...
以上就是JasperReport在设计、开发和运行过程中所需的核心JAR包及其作用。确保这些库正确引入并配置,才能顺利地进行报表开发和部署。在实际项目中,可能还需要根据具体需求添加额外的库,如用于特定数据库连接的...
变量可以在报表设计过程中用于存储和计算数据,从而实现更复杂的报表逻辑。 #### 4. JasperReport 在程序中的应用 ##### 4.1 在 JSP 程序中的应用示例 在 JSP 程序中集成 JasperReport 的步骤包括: 1. 配置 JSP ...
JasperReport是一款强大的开源报表工具,它允许开发者创建复杂、美观的报告,并能与各种Java应用程序和Web应用程序无缝集成。...在学习过程中,结合实例和实践操作,相信你会对JasperReport有更深入的理解。
标题与描述概述的知识点主要集中在使用JasperReport与iReport工具进行报表设计,特别是如何在报表中集成图表功能。以下是对这一主题的深入探讨: ### JasperReport与iReport简介 JasperReport是一款开源的报表工具...
- **使用参数**: 在报表中引用参数,实现数据过滤等功能。 **4.7 添加变量和使用变量** - **定义变量**: 存储和计算报表中的数据。 - **使用变量**: 在报表的不同部分显示变量的值。 #### 生成报表 **5.1 完成后...
这个压缩包包含了jasperReport使用过程中可能需要的所有组件和库,为开发者提供了极大的便利,避免了在不同源中搜索和整合这些依赖的麻烦。 jasperReport的核心功能包括设计报告模板、数据绑定、动态数据填充以及...
在本篇文档中,我们将探讨如何使用Ant启动HSQLDB服务。 #### 四、JasperReports与Ant集成 1. **环境搭建**: - 安装JDK:JasperReports需要Java环境才能运行。 - 安装Ant:用于构建和自动化任务。 2. **Ant...
1. 在MyEclipse或Eclipse中创建Struts2项目,并配置好所需的库,包括Struts2、iReport、JasperReport等相关依赖。 2. 使用iReport设计报表模板,保存为.jrxml文件。 3. 在Java代码中,通过JasperCompileManager编译....
数据集成功能允许用户从多种数据源(如数据库、Excel 文件、XML 文档等)中收集数据,并将其转换为统一的格式存储在数据集市或数据仓库中。这样可以确保所有报告和分析都基于一致和可靠的数据。 ##### 集成内存分析...