存储过程初学者,我知道存储过程有输出参数,可以让程序获取到,但是如果我的存储过程里是一段select语句,我想获取这些查询结果的结果集到程序来,我该怎么办?谢谢

解决方案 »

  1.   

    用sys_refcursorcreate or replace procedure p(
       p_cur  out  sys_refcursor
    )
    is
    begin
       open p_cur for select * from dual;
    end;
    至少前端语言怎么调用,请自行google
      

  2.   

    存储过程返回结果集
    http://topic.csdn.net/u/20090216/17/8856eb04-e96a-4873-8155-298987db32b4.html
      

  3.   

    public TeamPlayer find2(String playerId) {
    Connection conn = null;
    CallableStatement cstmt = null;
    //ResultSet rs = null;
    DBUtil util = new DBUtil();
    conn = util.openConn();
    TeamPlayer teamPlayer = new TeamPlayer();
    String sql = "{call p_find_t_03_player(?,?,?,?,?)}";
    try {
    cstmt = conn.prepareCall(sql);
    cstmt.setString(1, playerId);
    cstmt.registerOutParameter(2, Types.VARCHAR);
    cstmt.registerOutParameter(3, Types.VARCHAR);
    cstmt.registerOutParameter(4, Types.VARCHAR);
    cstmt.registerOutParameter(5, Types.VARCHAR);
    cstmt.execute();
    teamPlayer.setPlayerId(playerId);
    teamPlayer.setPlayerName(cstmt.getString(2));
    teamPlayer.setPlayerSex(cstmt.getString(3));
    teamPlayer.setPlayerAge(cstmt.getString(4));
    teamPlayer.setTeamId(cstmt.getString(5));

    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    util.close();
    return teamPlayer;
    }
    这是个存储过程的查询oracle 中这么写的,存储过程:需要在 命令窗口运行:create or replace procedure f_t_03_player
    (
    v_player_id in varchar2,
    v_player_name out varchar2,
    v_player_sex out varchar2,
    v_player_age out varchar2,
    v_team_id out varchar2
    )
    as
    begin
    select player_name,player_sex,player_age,team_id into v_player_name,v_player_sex,v_player_age,v_team_id from t_03_player where player_id = v_player_id;
    end;最后别忘记commit;存储过程