精华内容
下载资源
问答
  • Oracle存储过程可以利用游标返回结果集,它的实现方法是本文我们主要要介绍的内容,接下来我们就开始介绍。首先我们在sqlplus中建立如下的内容: 1、程序包 SQL> create or replace package types 2 ...
    Oracle存储过程可以利用游标返回结果集,它的实现方法是本文我们主要要介绍的内容,接下来我们就开始介绍。首先我们在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 begin  
    5 open l_cursor for select id, title from cf_news order by id;--表的名字  
    6 return l_cursor;  
    7 end;  
    8 /  
    函数已创建。 
    3、存储过程
    
    SQL> create or replace procedure getemps( p_cursor in out types.cursorType )  
    2 as  
    3 begin  
    4 open p_cursor for select id, title from cf_news order by id;--表的名字  
    5 end;  
    6 /  
    过程已创建。 
    4、建立一个可执行的java控制台程序
    
    import java.sql.*;  
    import java.io.*;  
    import oracle.jdbc.driver.*;  
    class GetValues  
    public static void main (String args [])  
    throws SQLException, ClassNotFoundException  
    {  
    String driver_class = "oracle.jdbc.driver.OracleDriver";  
    String connect_string = "jdbc:oracle:thin:@127.0.0.1:1521:database";  
    String query = "begin :1 := sp_listEmp; end;"; //此处调用前面建立的函数!  
    Connection conn;  
    Class.forName(driver_class);  
    conn = DriverManager.getConnection(connect_string, "scott", "tiger");  
    CallableStatement cstmt = conn.prepareCall(query);  
    cstmt.registerOutParameter(1,OracleTypes.CURSOR);  
    cstmt.execute();  
    ResultSet rset = (ResultSet)cstmt.getObject(1);  
    while (rset.next ())  
    System.out.println( rset.getString (1) );  
    cstmt.close();  
    } 
    将以上的代码在Java编译器中运行,即可实现该功能。

     

    展开全文
  • 利用游标返回结果集的的例子(Oracle 存储过程).doc 利用游标返回结果集的的例子(Oracle 存储过程).doc 利用游标返回结果集的的例子(Oracle 存储过程).doc
  • 利用游标返回结果集的的例子(Oracle 存储过程

    在sqlplus中建立如下的内容:
    1、程序包

    程序包已创建。

    2、函数

    3、过程

    4、建立一个可执行的Java控制台程序

    展开全文
  • 有如果典型的java的spring jdbc调用了存储过程返回游标结果集。如果循环调用此方法。则会造成 ORA-01000: 超出打开游标的最大数。原因是没有及时关闭oracle中的游标,但按理说jdbcTemplate模版已经关闭了链接,...
  • 2、创建函数(或者存储过程) create or replace function testpro return types.cursorType is lc types.cursorType; begin open lc for select * from test; return lc; end testpro; 3、编写C#程序(注意:要先应用...

    在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  begin  5      open l_cursor for select id, title from cf_news order by id;--表的名字  6      return l_cursor;  7  end;  8  /

    函数已创建。

    3、过程

    SQL> create or replace procedure getemps( p_cursor in out types.cursorType )  2  as  3  begin  4        open p_cursor for select id, title from cf_news order by id;--表的名字  5  end;  6  /

    过程已创建。

    4、建立一个可执行的Java控制台程序

    import java.sql.*; import java.io.*; import Oracle.jdbc.driver.*;

    class GetValues {   public static void main (String args [])                      throws SQLException, ClassNotFoundException   {       String driver_class = "oracle.jdbc.driver.OracleDriver";       String connect_string = "jdbc:oracle:thin:@127.0.0.1:1521:database";

    String query = "begin :1 := sp_listEmp; end;"; //此处调用前面建立的函数!      Connection conn;

    Class.forName(driver_class);       conn = DriverManager.getConnection(connect_string, "scott", "tiger");

    CallableStatement cstmt = conn.prepareCall(query);       cstmt.registerOutParameter(1,OracleTypes.CURSOR);       cstmt.execute();       ResultSet rset = (ResultSet)cstmt.getObject(1);

    while (rset.next ())         System.out.println( rset.getString (1) );         cstmt.close();   } }

    ---------------------==================----------------------------------------------------

    本例在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 types.cursorType is

    lc types.cursorType;

    begin

    open lc for select * from test;

    return lc;

    end testpro;

    3、编写C#程序(注意:要先应用System.Data.OracleClient)

    OracleConnection conn = new OracleConnection("YourConnectString");

    OracleCommand cmd = new OracleCommand("testpro", conn);

    cmd.CommandType = CommandType.StoredProcedure;

    OracleParameter op = new OracleParameter("c", OracleType.Cursor);

    op.Direction = ParameterDirection.ReturnValue;

    cmd.Parameters.Add(op);

    DataSet ds = new DataSet();

    OracleDataAdapter da = new OracleDataAdapter(cmd);

    da.Fill(ds,"test");

    this.dataGridView1.DataSource = ds.Tables["test"];

    PS:使用储过程方法类似。

    本例在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 types.cursorType is

    lc types.cursorType;

    begin

    open lc for select * from test;

    return lc;

    end testpro;

    3、编写C#程序(注意:要先应用System.Data.OracleClient)

    OracleConnection conn = new OracleConnection("YourConnectString");

    OracleCommand cmd = new OracleCommand("testpro", conn);

    cmd.CommandType = CommandType.StoredProcedure;

    OracleParameter op = new OracleParameter("c", OracleType.Cursor);

    op.Direction = ParameterDirection.ReturnValue;

    cmd.Parameters.Add(op);

    DataSet ds = new DataSet();

    OracleDataAdapter da = new OracleDataAdapter(cmd);

    da.Fill(ds,"test");

    this.dataGridView1.DataSource = ds.Tables["test"];

    PS:使用储过程方法类似。

    展开全文
  • 存储过程使用游标变量返回结果集 1)登录SQLPLUS,用户为SCOTT,利用该用户提供的表EMP [sql] C:/Users/Administrator>sqlplus scott/scott 2)编写一个FUNCTION,返回值为游标变量 [sql] CREATE OR ...

    存储过程使用游标变量返回结果集

     

    1)登录SQLPLUS,用户为SCOTT,利用该用户提供的表EMP

    [sql] 

    C:/Users/Administrator>sqlplus scott/scott  

     

    2)编写一个FUNCTION,返回值为游标变量

     

    [sql] 

    CREATE OR REPLACE FUNCTION GETEMPCURSOR(PRM_CHOICE IN NUMBER)  

    RETURN  SYS_REFCURSOR  

    IS  

      EMPCURSOR SYS_REFCURSOR;  

    BEGIN  

      IF PRM_CHOICE = 1 THEN  

        OPEN EMPCURSOR FOR SELECT * FROM EMP WHERE DEPTNO = 10;  

      ELSIF   PRM_CHOICE =2 THEN  

        OPEN EMPCURSOR FOR SELECT * FROM EMP WHERE DEPTNO = 20;  

      ELSIF  PRM_CHOICE =3 THEN  

        OPEN EMPCURSOR FOR SELECT * FROM EMP WHERE DEPTNO = 30;  

      ELSE  

        OPEN EMPCURSOR FOR SELECT * FROM EMP;  

      END IF;  

      RETURN EMPCURSOR;  

    END;  

    3)编写一个PLSQL块,调用上面的FUNCTION得到返回的游标变量

     

    [sql] 

    DECLARE  

      EMPCURSOR SYS_REFCURSOR;  

      REC_EMP EMP%ROWTYPE;  

    BEGIN  

      EMPCURSOR := GETEMPCURSOR(10);  

      IF EMPCURSOR%ISOPEN THEN  

        LOOP  

            FETCH EMPCURSOR INTO REC_EMP;  

            EXIT WHEN EMPCURSOR%NOTFOUND;  

            DBMS_OUTPUT.PUT_LINE(''||'==>'||REC_EMP.ENAME);  

        END LOOP;  

      END IF;  

      CLOSE EMPCURSOR;  

    END;  

    4)几点说明:

     

    ①有三种语句可以控制游标变量的使用,分别是OPEN FOR、FETCH还有CLOSE。其中OPEN用于打开游标变量。FETCH用于将游标变量中的数据存放到变量当中存储。CLOSE用于在遍历完成之后,关闭游标。

    ②使用游标的时候,可以将REF CURSOR指定为强类型或者弱类型(在定义的后面增加RETURN ROWTYPE的方式),如果指定为强类型,小心避免出现类型不匹配的错误。

    ③游标变量可以在应用于数据库服务器之间进行传递,可以在数据库内部进行传递。应用或者数据库本身不具备单独的变量存储空间,其游标变量其实就是一个指向内存的指针,实质上这些数据是共享的。

    ④能够将游标的四个属性%FOUND,%NOTFOUND,%ISOPEN以及%ROWCOUNT应用到游标变量中,用于判断游标变量的状态。

    ⑤可以使用FETCH一次获取一条记录,也可以使用FETCH BULK COLLECT INTO 一次获取一条或者多条放到一个或者多个集合类型中。

    ⑥不要忘记关闭游标。

     

    ibatis  call

    <resultMap type="********.AdvNushiMikomiInputExcelOutPutDto" id="advNushiMikomiInputExcelOutPutDto">
    </resultMap>
    <select id="selectAdvNushiMikomiInputExcelSumiNetMokoCursor" parameterType="map" statementType="CALLABLE">
    <![CDATA[
    {#{resultList, mode=OUT, jdbcType=CURSOR, javaType=java.sql.ResultSet, resultMap=advNushiMikomiInputExcelOutPutDto} = call GETSUMIMOKOCURSOR(
    #{v_nengetsu,jdbcType=CHAR,mode=IN},
    #{v_uriageBuKaCode,jdbcType=CHAR,mode=IN},
    #{v_tantoBuKaCode,jdbcType=CHAR,mode=IN},
    #{v_gyosyuMcode,jdbcType=CHAR,mode=IN},
    #{v_advNushiCode,jdbcType=CHAR,mode=IN}
    )}
    ]]>
    </select>

     

    接口

     

    advNushiMikomiInputDao.selectAdvNushiMikomiInputExcelSumiNetMokoCursor(map);
    List<AdvNushiMikomiInputExcelOutPutDto> advNushiMikomiInputExcelSumiNetMoko = (List<AdvNushiMikomiInputExcelOutPutDto>)map.get("resultList");

    转载于:https://www.cnblogs.com/caogang/p/4625258.html

    展开全文
  • 最近调查了关于在Java中调用Oracle的存储过程,取得返回纪录的情况,调查了半天作了如下一个例子,仅供今后或别人参考: 1)创建Function create or replace package arsweb as type refcursor is ref cursor; ...
  • 定义类型 定义游标 chuangj
  • 3、过程 SQL> create or replace procedure getemps( p_cursor in out types.cursorType ) 2 as 3 begin 4 open p_cursor for select id, title from cf_news order by id;--表的名字 5 end; 6 / 过程已...
  • MySQL存储过程 游标如何在存储过程中使用MySQL游标来遍历SELECT语句返回结果集MySQL游标简介要处理存储过程中的结果集,请使用游标游标允许您迭代查询返回的一组行,并相应地处理每行。MySQL游标为只读,不可...
  • 执行存储过程返回一个游标结果集,并把游标结果集取出来放入一个list中返回 public List getProcedureValues(String procedure, Object[] o) { List list = new ArrayList(); Connection con = null; ...
  • 存储过程使用游标变量返回结果集   1)登录SQLPLUS,用户为SCOTT,利用该用户提供的表EMP  www.2cto.com   [sql]  C:\Users\Administrator>sqlplus scott/scott   2)编写一个FUNCTION,...
  • 项目中用到,简单记一下,怕自己忘记了。 Controller: 结果集result server: ...flagCountryDao....结果集返回至: paramsMap.get("cursor") dao层: mybatis的xml文件: <select id="sel...
  • create or replace package returncursor istype cur_cj is ref cursor ;procedure find(emp out cur_cj);end returncursor;create or replace package body returncursor isprocedure find(emp out cur_cj
  • 新建存储过程create or replace procedure getcur(p_rc out sys_refcursor)isbeginopen p_rc for 'select * from room';end getcur;java中调用Class.forName("oracle.jdbc.driver.OracleDriver");Connection conn = ...
  • 原帖地址...1)登录SQLPLUS,用户为SCOTT,利用该用户提供的表EMP C:\Users\Administrator>sqlplus scott/scott 2)编写一个FUNCTION,返回值为游标变量 CREATE OR REPLACE FUNCTION GETEM...
  • 3、过程 SQL> create or replace procedure getemps( p_cursor in out types.cursorType )  2 as  3 begin  4 open p_cursor for select id, title from cf_news order by id;--表的名字  5 end;  6 / ...
  • MySQL存储过程 游标

    2019-02-26 16:51:00
    如何在存储过程中使用MySQL游标来遍历SELECT语句返回结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标游标允许您迭代查询返回的一组行,并相应地处理每行。 MySQL游标为只读,不可滚动和敏感。 ...
  • 我正在尝试从Java调用StoredProcedure,但是返回结果始终为 false 。...我有一个 存储过程 ,PROCEDURE get_records(grp1 IN a.name%TYPE DEFAULT NULL,grp2 IN a.name%TYPE DEFAULT NULL,grp3 IN a.name%TYPE D...
  • 第一种方法:*过程返回记录:CREATE OR REPLACE PACKAGE pkg_testAS TYPE myrctype IS REF CURSOR; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);END pkg_test;/ CREATE OR REPLACE PACKAGE BODY pkg_testAS...
  • 实现了游标的一些使用方法,两种定义与使用的方法,存储过程的定义一使用调用返回结果集存储过程
  • DECLARE V_BEGIN DATE := TO_DATE('2010-12-26 00:00', 'YYYY-MM-DD HH24:MI'); V_END DATE := TO_DATE('2011-01-06 23:00', 'YYYY-MM-DD HH24:MI'); BEGIN WHILE V_BEGIN

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542
精华内容 216
关键字:

存储过程游标返回结果集