ireport oracle,用ireport调用oracle存储过程
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,用ireport调用oracle存储过程相关推荐
- qt 处理oracle事务,qt调用oracle存储过程,该怎么处理(2)
当前位置:我的异常网» QT开发 » qt调用oracle存储过程,该怎么处理 qt调用oracle存储过程,该怎么处理(2) www.myexceptions.net 网友分享于:2013-03- ...
- java调用oracle过程,JAVA调用ORACLE存储过程报错
当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net 网友分享于:2015-07-1 ...
- mybatis可以用oracle,使用MyBatis调用oracle函数(基于注释)
我需要使用注解在MyBatis中调用Oracle函数.使用MyBatis调用oracle函数(基于注释) 我的映射: @Select("{ CALL #{outParam, jdbcType ...
- ibatis oracle function,IBATIS调用oracle function(函数)的步骤实例
IBATIS调用oracle function(函数)的方法实例 引用 create or replace function getClassifiedCode(p_planCode in varch ...
- c oracle udt,c#调用Oracle UDT自定义结构数组类型源代码
[实例简介] c#调用Oracle UDT自定义结构数组类型源代码 [实例截图] [核心代码] ffa2062d-cc85-43bf-9aeb-2cf440e254c3 └── vsstart └── ...
- c# 调用oracle function,C#调用Oracle存储过程的方法
GetReviewTask public string GetReviewTask(GetReviewTaskInput input) { /* * 试过三种写法都不对,暂时找不出是什么原因,改成拼S ...
- oracle批处理参数调用,Oracle数据库定时自动备份批处理代码(Windows)
这是最近写的一个Oracle数据库自动备份的批处理,经过测试正常运行,记录如下.包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的高手指导! 注:这些内容是本人经过一番学习和多次测试调试后的 ...
- mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...
- java调用存储过程 oracle_java调用oracle存储过程
java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...
- java 调用存储过程structdescriptor,Java调用oracle存储过程,集合入参的正确姿势
这是我工作之前遇到的一个需求,Java调用存储过程,入参是集合.踩了一些坑,决定写个干货,和大家分享下. 项目使用的oracle版本: com.oracle ojdbc6 11.2.0.1.0 sys ...
最新文章
- 不需要程序员,产品经理也能10分钟打造一个深度学习模型
- android加固多渠道,Android 多渠道打包(使用友盟统计,结合360加固宝进行多渠道打包)...
- 全球及中国洁净室层流设备行业需求现状与投资战略规划研究报告2021年版
- Nginx HTTP User_agent
- Redis Sentinel配置小记
- ripro虚拟资源主题8.9开心版/免授权/ripro日主题V8.9
- 树莓派安装python2.7_树莓派3 + raspbian lite + OpenCV 3 环境搭建
- 11.4 final类
- linux卸载kong,Ubuntu 源码安装Kong
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
- keydown和keypress的区别
- SEO人员,你真的要做一个采集侠吗?
- Google设置应用专用密码
- 占领电商细分领域高地的湖南,在产业互联网时代该如何入海?
- ios版本与xcode版本
- Spire.Doc利用word样式读取word文字内容(.NET)
- html日期控件默认设置为当天日期
- python 汉字转拼音
- 华为p10和p10plus区别_华为P10和华为P10Plus怎么样?哪个更值得买?华为P10与P10Plus区别对比...
- 洛谷千题详解 | P1010 [NOIP1998 普及组] 幂次方【C++、Java、Python、Pascal语言】