引用地址:http://www.alixixi.com/program/a/2008050727634.shtml   本例在VS2005+Oracle 92010 + WindowsXp Sp2测试通过 1.创建一个游标变量,为返回值使用create or replace package types as  type cursorType is ref cursor;end; 2.创建函数(或者存储过程)create or replace function testpro return typ…
在sqlplus中建立如下的内容: 1.程序包 SQL> create or replace package types  2  as  3      type cursorType is ref cursor;  4  end;  5  / 程序包已创建. 2.函数SQL> create or replace function sp_ListEmp return types.cursortype  2  as  3      l_cursor    types.cursorType;  4 …
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. 但是若按正规的oracle写法,存储过程写在包体里面, 如果这样的话,PB会找不到此存储过程(如果用直连的方式)(如果用ODBC的方式则有可能不能正常识别存储过程的参数) 因此我们需要将存储过程单独写. 首先我们来看下oracle正规的返回结果集的存储过程的写法 方法一: create or re…
DECLARE -- 定义类型. TYPE test_type IS TABLE OF test_main%ROWTYPE; test_data test_type; -- 定义游标. CURSOR c_test_main IS SELECT id, value FROM test_main; BEGIN -- 打开游标. OPEN c_test_main; -- 开始循环 LOOP -- 填充数据 批量填充,每次读取2条. FETCH c_test_main ; -- 调试输出. ..test…
参考: http://bbs.csdn.net/topics/390866155 辅助参考: http://www.2cto.com/kf/201307/226848.html http://blog.csdn.net/grhlove123/article/details/7549290 在smm中,这样的controller编写方式是不一样的: 存储过程: create or replace procedure pro_getchart(chart_cur out sys_refcursor)…
package com.srie.db.pro; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; public class CallPro { public static void main(String[] args) { Connection conn = null; try { Class.forN…
Oracle存储过程: CREATE OR REPLACE PROCEDURE getcity ( citycode IN VARCHAR2, ref_cursor OUT sys_refcursor /* 这个sys_refcursor类型在SYS.STANDARD包中 */ ) AS BEGIN OPEN ref_cursor FOR SELECT * FROM tb_city_code WHERE city_code = citycode; END; / Java调用代码: try { D…
首先要弄两个type,不知道什么鬼: 1. create or replace type obj_table as object ( id ), name ), ) ) 2. create or replace type t_table is table of obj_table 函数体: create or replace function getStationListTb(s number) return t_table as rs t_table:= t_table(); ); i ; b…
  oracle 存储过程 返回结果集 CreationTime--2018年8月14日09点50分 Author:Marydon 1.情景展示 oracle存储过程如何返回结果集 2.解决方案 最简单的方式:返回oracle的系统游标 CREATE OR REPLACE PROCEDURE CARD_COUNT_YLJG(V_START_DATE IN VARCHAR2, --开始时间 V_END_DATE IN VARCHAR2, --结束时间 V_PARENTORGID IN VARCHA…
一个扩展存储过程调用另一个存储过程,示例: 被调用存储过程:最后会返回一个游标,游标返回一个值.调用这个存储过程的存储过程同样需要获取它. procedure SearchBill --根据到货单号查询所有行号 ( P_code VARCHAR, P_UserCode varchar , P_org varchar, P_warehouse varchar, p_movetype varchar, p_billtype varchar, p_note varchar, p_isred varch…
--Oracle使用游标查询结果集所有数据 DECLARE myTabelName NVARCHAR2():=''; --表名 myTableRowComment NVARCHAR2():=''; --行内容 result ):=''; --结果 CURSOR myCursor IS SELECT * FROM 结果集(表名/视图名/查询结果) ORDER BY (结果集中的列名);--定义游标 myRecord myCursor%ROWTYPE; --定义游标记录类型 BEGIN OPEN m…
在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper namespace="com.rrtong.rrt.auto.dao.SelfStatisticDataDao"> <resultMap id="SelfStatisticData" type="SelfStatisticData"> <…
最近在用ibatis.net框架和oracle 11g开发一套程序.其中有一个需求就是通过存储过程,查询指定条件的数据集. 但是在开发的过程中遇到了问题,问题如下: 1.如何通过ibatis.net执行存储过程? 2.通过ibatis.net执行存储过程时,如何传参数? 3.通过ibatis.net执行存储过程时,传递参数过程中,dbType和type是如何对应的? 4.oracle存储过程中返回的游标集合SYS_REFCURSOR对应dbType是什么? 5.通过ibatis.net执行存储过…
Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合,再转json一气呵成. 不过,各种ORM总有让人吐槽的地方... 比如,我之前在SqlServer上写测试,搞封装,没有任何问题.CURD.批量操作.存储过程.事物等. 可是以转到Oracle上,就出问题了[喂~不是说好的支持Oracle的么] 在写Dapper+Oracle单元测试的前期,是没有…
Oracle和Sqlserver不一样的地方有很多. 个人最深的体会是存储过程返回结果集,在Sqlserver中直接select查询就行,Oracle就不行了. 这里,就用最简单的例子说明存储过程返回结果集的例子 CREATE OR REPLACE PROCEDURE 存储过程名( 字段名 in VARCHAR2, l_result OUT TYPES.RQ_REF_CURSOR -- 包里面方法名 ) is str_sql ) := ''; begin str_sql:='select * f…
原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset DataSet相当你用的数据库: DataTable相当于你的表.一个 DataSet 可以包含多个 DataTable.如果用datatable只适合返回一个结果集(游标)的信息. 例: public DataSet Get_TRAFeeQinfenStatus(int type, string BargainOrderCode, string ParkUserId, string BerthCode) { O…
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式:    以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.    (1) 返回游标:        return的类型为:SYS_REFCURSOR        之后在IS里面定义变量:curr SYS_REFCURSOR;        最后在函数体中写:         open cur for            select ......;     …
自己解决问题了 问题总结: 1.index by表不能存储在数据库中的type中,故选择嵌套表. 2.ibatis不支持oracle的复合数据类型的返回.(个人理解) 3.替代方案:用返回oracle游标来代替复合数据类型.ibatis能接受oracle游标类型. 注意此处是ibatis2.3 部分代码: 1.java 1 private Map<String,Object> userStateResult(Users users)throws Exception{ 2 Map<Stri…
使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我们怎么实现跟SQL SERVER同样的功能呢?且看以下代码: create or replace procedure sp_getdept (rep_type in varchar2,sel in varchar2,result out sys_refcursor) as seq ); info )…
注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结果集.特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇: 1.存储过程返回结果集 2.Java中执行存储过程以及多结果集处理 3.返回临时表中数…
一.用自定义类型实现 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type type_table is table of number; 上面的类型定义好后,在function使用可用返回一列的表,稍后介绍返回多列的 2. 创建函数 在函数的定义中,可以使用管道化表函数和普通的方式,下面提供两种使用方式的代码: 1).管道化表函数方式: create or replace function f_pipe (s num…
一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)   AS BEGIN INSERT INTO DBO.EMP (ID,NAME) VALUES (PARA1, PARA2); END PRO_1; Java代码: package com.icesoft.service; import java.sql.*; import java.sql.ResultSet; p…
在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得出上一头汗:),这里我简单介绍一下,以供参考,   1  定义包      oracle 返回的结果集需要自定义一个 CURSOR (游标变量)性质的变量,这个要在包头定义,所以要建立一个包,如下是包头 Pl/sql代码 CREATE OR REPLACE PACKAGE PAK_rstest IS…
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="empno" column="empno"/> <result property="ename" column="ename"/> <result property="mgr" column="…
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题. 本文只讨论使用存储过程返回结果集. 具体实现如下: -- 启用服务器输出---------------------set serveroutput…
近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据.需求为:多个端口流量每五分钟累计汇总一次.如果用程序实现则为讲所有数据取出做每五分钟统计,元数据获取带来的数据量将是10万条以上. 在数据库中做汇总统计只需要24*12=288条记录. 具体实现方式如下: /*打开日志输出*/ Set serveroutput on ; /*创建类型*/ creat…
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题. 本文只讨论使用存储过程返回结果集. 具体实现如下: -- 启用服务器输出---------------------set serveroutput…
这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 以下是我在开发项目中第一次编写的存储,里面用到了嵌套游标和嵌套循环,以及变量的定义方式,第一次不规范的地方还请多多包含,有不明白的地方也可以给我留言,大家互相学习. --准考证 随机生成 存储过程 --生成规则:在用户选择考试关联好考点和考场之后,点击自动生成准考证,准考证按照 当年考试次数后四位+岗位类型+考点编号+考场编…
在Oracle中,用函数返回结果集有时候要用到,下面是demo: 1 2 3 4 5 6 7 create or replace type t_test as object ( id integer, create_time date, object_name varchar2(60) ); create or replace type t_test_table as table of t_test; 1.用数组的方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16…
http://www.2cto.com/database/201204/127180.html oracle实现存储过程返回查询结果集合的方法   --实现存储过程返回查询结果集合的方法 ,以下代码来自网络整理  http://topic.csdn.net/u/20090721/12/ba403739-3212-4016-83ec-2a7062f21081.html  Java代码   --第一种方法   create or replace Package SYSBasic   as  www.…