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存储过程相关推荐

  1. qt 处理oracle事务,qt调用oracle存储过程,该怎么处理(2)

    当前位置:我的异常网» QT开发 » qt调用oracle存储过程,该怎么处理 qt调用oracle存储过程,该怎么处理(2) www.myexceptions.net  网友分享于:2013-03- ...

  2. java调用oracle过程,JAVA调用ORACLE存储过程报错

    当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net  网友分享于:2015-07-1 ...

  3. mybatis可以用oracle,使用MyBatis调用oracle函数(基于注释)

    我需要使用注解在MyBatis中调用Oracle函数.使用MyBatis调用oracle函数(基于注释) 我的映射: @Select("{ CALL #{outParam, jdbcType ...

  4. ibatis oracle function,IBATIS调用oracle function(函数)的步骤实例

    IBATIS调用oracle function(函数)的方法实例 引用 create or replace function getClassifiedCode(p_planCode in varch ...

  5. c oracle udt,c#调用Oracle UDT自定义结构数组类型源代码

    [实例简介] c#调用Oracle UDT自定义结构数组类型源代码 [实例截图] [核心代码] ffa2062d-cc85-43bf-9aeb-2cf440e254c3 └── vsstart └── ...

  6. c# 调用oracle function,C#调用Oracle存储过程的方法

    GetReviewTask public string GetReviewTask(GetReviewTaskInput input) { /* * 试过三种写法都不对,暂时找不出是什么原因,改成拼S ...

  7. oracle批处理参数调用,Oracle数据库定时自动备份批处理代码(Windows)

    这是最近写的一个Oracle数据库自动备份的批处理,经过测试正常运行,记录如下.包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的高手指导! 注:这些内容是本人经过一番学习和多次测试调试后的 ...

  8. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析

    mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...

  9. java调用存储过程 oracle_java调用oracle存储过程

    java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...

  10. java 调用存储过程structdescriptor,Java调用oracle存储过程,集合入参的正确姿势

    这是我工作之前遇到的一个需求,Java调用存储过程,入参是集合.踩了一些坑,决定写个干货,和大家分享下. 项目使用的oracle版本: com.oracle ojdbc6 11.2.0.1.0 sys ...

最新文章

  1. 不需要程序员,产品经理也能10分钟打造一个深度学习模型
  2. android加固多渠道,Android 多渠道打包(使用友盟统计,结合360加固宝进行多渠道打包)...
  3. 全球及中国洁净室层流设备行业需求现状与投资战略规划研究报告2021年版
  4. Nginx HTTP User_agent
  5. Redis Sentinel配置小记
  6. ripro虚拟资源主题8.9开心版/免授权/ripro日主题V8.9
  7. 树莓派安装python2.7_树莓派3 + raspbian lite + OpenCV 3 环境搭建
  8. 11.4 final类
  9. linux卸载kong,Ubuntu 源码安装Kong
  10. 阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
  11. keydown和keypress的区别
  12. SEO人员,你真的要做一个采集侠吗?
  13. Google设置应用专用密码
  14. 占领电商细分领域高地的湖南,在产业互联网时代该如何入海?
  15. ios版本与xcode版本
  16. Spire.Doc利用word样式读取word文字内容(.NET)
  17. html日期控件默认设置为当天日期
  18. python 汉字转拼音
  19. 华为p10和p10plus区别_华为P10和华为P10Plus怎么样?哪个更值得买?华为P10与P10Plus区别对比...
  20. 洛谷千题详解 | P1010 [NOIP1998 普及组] 幂次方【C++、Java、Python、Pascal语言】

热门文章

  1. 8.10 网络编程——客户端从服务器中下载文件 TFTP协议
  2. 如何关闭谷歌浏览器Google Chrome的阅读清单功能
  3. 管理学论文对人性的假设
  4. 【附源码】计算机毕业设计java原创网络文学管理系统设计与实现
  5. 计算机无法安装u盘驱动,电脑上插入u盘提示未能成功安装设备驱动程序怎么修复...
  6. 如何高效构建融资担保场景化分析体系
  7. ThingWorx公开课圆满结束
  8. 阿里云的ECS服务器1M宽带等于多少入网kbps和出网kbps
  9. java学习感想_Java学习感想
  10. 矩阵可逆与行列式关系的一个直观推导