你的意思是什么呀?
select本来就可以根据你的条件实现得到多条数据呀
Resultset rs = stmt.executeQuery("select...")
这样有什么问题吗?

解决方案 »

  1.   

    我是想通过调用存储过程来获得:在Oracle的存储过程该如何写.
    CallableStatement cs=conn.preparedCall("{call proc_name(?,?)}");
    ...
    ...
    ResultSet rs=cs.executeQuery();
      

  2.   

    5.1.6 可选结果集或多结果集
    通常使用 executeQuery(它返回单个 ResultSet)或 executeUpdate(它可用于任何数据库修改语句,并返回更新行数)可执行 SQL 语句。但有些情况下,应用程序在执行语句之前不知道该语句是否返回结果集。此外,有些已存储过程可能返回几个不同的结果集和/或更新计数。为了适应这些情况,JDBC 提供了一种机制,允许应用程序执行语句,然后处理由结果集和更新计数组成的任意集合。这种机制的原理是首先调用一个完全通用的 execute 方法,然后调用另外三个方法,getResultSet、getUpdateCount 和 getMoreResults。这些方法允许应用程序一次一个地研究语句结果,并确定给定结果是 ResultSet 还是更新计数。用户不必关闭 ResultSet;当产生它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该 ResultSet 将被 Statement 自动关闭。
      

  3.   

    我是要在Oracle中执行存储过程返回记录集来获得ResultSet,
    而不是在程序中用Statement或PreparedStatement的executeQuery方法来获得.
    例如在SQLServer2000中可实现此功能,现在不知道oracle中的存储过程如何编写.
    例如SQLServer存储过程脚本:
    --------------------------------------------------
    -- GetBooksByAuthor
    --------------------------------------------------
    CREATE PROCEDURE GetBooksByAuthor
        @Author NVARCHAR(40)
    AS
        SELECT DISTINCT 
               i.PKId,
               i.TypeId,
               b.PublisherId,
               b.ISBN,
               i.ImageFileSpec,
               i.Name 'Title',
               i.Description,
               i.UnitPrice,
               i.UnitCost,
               t.Name 'ItemType',
               p.Name 'PublisherName'
          FROM Items i,
               ItemType t,
               Books b,
               Publishers p,
               BookAuthor k,
               Authors a
         WHERE CHARINDEX(@Author, a.Name) > 0
           AND i.PKId = b.ItemId
           AND k.ItemId = b.ItemId
           AND a.PKId = k.AuthorId
           AND i.TypeId = t.PKId
           AND b.PublisherId = p.PKId
      ORDER BY i.PKId    RETURN 0
      

  4.   

    oracle里面好像是不支持。
    你可以试试看通过临时表来实现。
      

  5.   

    Oracle procedure不支持返回ResultSet.
    楼上说的package是可以的,不过从多种数据库的适应性来讲就不应要procedure来返回记录集的,它的主要功能是对数据的操作(insert,update,delete),用代码来实现记录集的获得.
      

  6.   

    包头:
    create or replace package TEST as
    type refcursor is ref cursor;function get_mx(p_ysnd in number)return refcursor;end TEST;包体:
    create or replace package body TEST is
    function get_mx(p_ysnd in number)return refcursor
    is
    cur_ret refcursor;
    begin
    open cur_ret for
    select xtyhid,xtyhbm,xtyhmc
      from xt_xtyh;
    return cur_ret;end;
    end TEST;
      

  7.   

    此贴子我早已结贴了,这么又出现了.难道CSDN恢复后连帖子内容也丢失了.