ireport不能直接调用oracle存储过程的结果集,因为存储过程不能返回标准的结果集。在oracle中作为解决方案,你可以使用存储函数来得到存储过程的结果集。
CREATE GLOBAL TEMPORARY TABLE TEMP_DATA(
create_date DATE,
case_id VARCHAR2(30),
division_a NVARCHAR2(50),
division_name NVARCHAR2(50),
case_type NVARCHAR2(255),
case_stage_2 VARCHAR2(20),
case_stage_3 VARCHAR2(20),
case_stage_4 VARCHAR2(20),
transaction_remark NVARCHAR2(255)
) ON COMMIT PRESERVE ROWS
CREATE OR REPLACE PROCEDURE LOAD_TEMP_DATA
as
TYPE cur is REF CURSOR;
myCursor cur;
create_date DATE;
case_id VARCHAR2(30);
division_a NVARCHAR2(50);
division_name NVARCHAR2(50);
case_type NVARCHAR2(255);
case_stage VARCHAR2(2);
case_assignee VARCHAR2(255);
transaction_remark NVARCHAR2(255);
begin
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_DATA';
COMMIT;
OPEN myCursor FOR
select
table1.create_date, table1.case_id,
table2.division_name,
table1.division_name,
table3.description c_type,
table1.case_stage, table1.case_assignee,
table1.transaction_remark
from
(select
cm.create_date, cm.case_id, dt.division_name, dt.division_parent_id, cm.case_type,
ct.transaction_id, ct.case_stage, ct.case_action, ct.transaction_remark, ct.case_assignee
from
com.division_type dt, com.user_master um, com.case_master cm, com.case_transaction ct
where
dt.division_id= um.division_id and cm.create_by= um.user_id and ct.case_id= cm.case_id
and ct.case_action='A5'
order by
cm.case_id, ct.transaction_id
)table1
join
(select
dt.division_id, dt.division_name
from
com.division_type dt
where
dt.division_level = 'A'
)table2 on table1.division_parent_id=table2.division_id
join
(select
p.field_value fvalue,
p.field_description description
from
com.parameter p
where
p.field_name='Case_Type'
)table3 on table1.case_type = table3.fvalue;
LOOP
FETCH myCursor INTO
create_date, case_id, division_a, division_name,
case_type, case_stage, case_assignee, transaction_remark;
EXIT WHEN myCursor%NOTFOUND;
dbms_output.put_line(case_id);
IF case_stage='S2' THEN
INSERT INTO TEMP_DATA VALUES
(
create_date, case_id, division_a, division_name,
case_type, case_assignee, '---', '---', transaction_remark
);
ELSIF case_stage='S3' THEN
INSERT INTO TEMP_DATA VALUES
(
create_date, case_id, division_a, division_name,
case_type, '---', case_assignee, '---', transaction_remark
);
ELSIF case_stage='S4' THEN
INSERT INTO TEMP_DATA VALUES
(
create_date, case_id, division_a, division_name,
case_type, '---', '---', case_assignee, transaction_remark
);
ELSE
INSERT INTO TEMP_DATA VALUES
(
create_date, case_id, division_a, division_name,
case_type, '---', '---', '---', transaction_remark
);
END IF;
COMMIT;
END LOOP;
CLOSE myCursor;
end;
--call LOAD_TEMP_DATA();
--select * from TEMP_DATA;
CREATE OR REPLACE TYPE DATA_TYPE AS OBJECT(
create_date DATE,
case_id VARCHAR2(30),
division_a NVARCHAR2(50),
division_name NVARCHAR2(50),
case_type NVARCHAR2(255),
case_stage_2 VARCHAR2(20),
case_stage_3 VARCHAR2(20),
case_stage_4 VARCHAR2(20),
transaction_remark NVARCHAR2(255)
)
CREATE OR REPLACE TYPE DATA_TYPE_TABLE AS TABLE OF DATA_TYPE
CREATE OR REPLACE FUNCTION DATAS_FUNCTION
return DATA_TYPE_TABLE pipelined
is
PRAGMA AUTONOMOUS_TRANSACTION;
TYPE cur1 is REF CURSOR;
myCursor cur1;
out_rec DATA_TYPE := DATA_TYPE(null, null, null, null, null, null, null, null, null);
BEGIN
LOAD_TEMP_DATA();
OPEN myCursor FOR
select
create_date, case_id, division_a, division_name, case_type,
case_stage_2, case_stage_3, case_stage_4, transaction_remark
from TEMP_DATA;
LOOP
FETCH myCursor INTO
out_rec.create_date, out_rec.case_id, out_rec.division_a,
out_rec.division_name, out_rec.case_type, out_rec.case_stage_2,
out_rec.case_stage_3, out_rec.case_stage_4, out_rec.transaction_remark;
EXIT WHEN myCursor%NOTFOUND;
PIPE ROW(out_rec);
END LOOP;
CLOSE myCursor;
return;
END;
select * from table(DATAS_FUNCTION());
分享到:
相关推荐
在使用Ireport连接Oracle数据库时,关键在于JDBC驱动程序。Oracle JDBC驱动程序ojdbc6.jar是Oracle数据库与Java应用程序之间的桥梁,允许Java应用通过JDBC接口与Oracle数据库通信。在本资源中,提供的是ojdbc6.jar,...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
Struts2.0+JasperReport+IReport+Oracle 报表开发整个项目打包上传,用MyEclipse导入即可调试使用含报表文件、数据库表结构及测试数据,项目中解决了PDF中文
IReport 5.6是一个较旧但仍然广泛使用的版本,与JDK 1.7兼容。本主题主要围绕Java如何调用IReport 5.6进行报表生成,并涉及相关的jar包依赖。 首先,Java调用IReport 5.6的关键在于正确引入必要的jar包。这些jar包...
在Java项目中使用iReport,我们需要正确部署iReport的jar包,并在代码中正确引用,以便能够动态生成和调用报表。 1. **iReport Jar包部署**: - 下载iReport的对应版本(本例中为4.1)的jar文件,通常包括`ireport-...
本文将详细介绍在Windows环境下使用iReport制作报表的全过程,以及如何在Web和胖客户端应用中集成Jasperreport报表控件。 **1、前言** iReport的使用教程通常只提供基础指导,缺乏全面的操作步骤,使得开发者在...
本文档旨在详细介绍如何使用Java语言调用iReport工具来生成Word报告的过程。主要内容包括环境搭建、数据库配置、报表设计以及Java代码实现等方面。 #### 二、环境搭建 1. **确认已安装并配置JDK** - 确保系统已经...
Java JSP调用iReport动态模板打印是一种在Web应用程序中实现报表打印的常见技术。iReport是一款开源的报表设计工具,它可以与Java、JSP、Servlets等进行集成,为开发者提供灵活的报表生成和打印功能。在这个场景下,...
【ireport自定义报表制作使用手册】 一、ireport简介 ireport是一款强大的报表设计工具,主要用于Java平台下的B/S系统。它支持多种数据源,包括JDBC、XML、CSV等,可以创建复杂的表格、图表、文本等元素,提供丰富...
本文将详细介绍如何使用iReport来制作报表,主要分为三个部分:一是使用iReport制作报表的详细过程;二是使用JasperReport作为报表控件开发胖客户端报表应用;三是使用JasperReport作为报表控件开发Web报表应用。...
本主题将详细讲解如何利用 Ireport 实现子报表调用交叉报表的过程,以帮助你更好地理解和操作。 首先,我们需要了解什么是子报表和交叉报表。子报表是在主报表内部嵌套的一个独立报表,它可以展示与主报表相关的...
本文将详细介绍如何使用iReport 4创建饼图,这是一个基于Java的开源报表设计工具,常用于JasperReports项目。iReport允许用户设计复杂的报告布局,包括表格、图表等元素,而本文的重点在于饼图的制作过程。 首先,...
【ireport的使用】 1. **安装与配置**:首先需要从官方网站下载ireport和jasperreport的对应版本。ireport通常以nbm插件形式提供,可以直接安装到NetBeans或其他支持nbm的IDE中。jasperreport是库文件,用于项目中...
【如何使用IReport3.5.1来制作报表模板】 IReport是一款强大的报表设计工具,尤其在配合JasperReports库时,能帮助开发者创建复杂的报表模板。以下将详细介绍如何使用IReport 3.5.1来创建报表模板。 **一、安装...
iReport-5.1.0和iReport-5.6.0
在描述中提到的博客链接(由于实际链接无法访问,我们只能基于提供的信息进行推测)可能包含关于如何使用iReport或者iReport的某个特定功能的教程或经验分享。博主可能探讨了如何处理报表设计、数据源配置、样式定制...
### iReport 使用入门详解 #### 一、iReport简介 iReport是一款强大的开源报表设计工具,主要用于创建复杂的报表。它可以无缝地集成到任何Java应用程序中,通过调用JasperReports库来实现报表功能。该工具完全由...
【ireport使用】 iReport是一款基于Java的开源报表设计工具,它是JasperReports库的一部分,主要用于设计复杂的PDF、HTML、Excel、CSV等格式的报表。本文将详细介绍iReport 4.5.1版本的使用方法。 1. **报表设计器...