函数在PL / SQL中返回游标 - 在Java端或PL / SQL端关闭它?

时间:2015-12-17 18:47:50

标签: java sql jsp jdbc plsql

我使用Java调用PL / SQL中的存储函数,返回simpleText.text == nil

REF CURSOR

如果我在FUNCTION getApprovers RETURN approvers_cursor IS approvers approvers_cursor; BEGIN OPEN approvers FOR select * from role where role_name = 'APPROVER'; RETURN approvers; END;

之前关闭光标
RETURN approvers

我在Java中收到警告 - CLOSE approvers; RETURN approvers;

似乎我无法关闭PL / SQL存储函数中的光标。那么光标的关闭在哪里发生?

1 个答案:

答案 0 :(得分:3)

事实上,ResultSet s 游标。

 //JAVA                            //PL/SQL
 PreparedStatement ps = con.prepareStatement(
            "select * from role where role_name = ?");
 ps.setString(1, "APPROVER");
 ResultSet rs = ps.executeQuery(); //OPENS the cursor
 while(rs.next()) {                //FETCHES next row from cursor
    //Handle resultset
 }
 rs.close();                       //CLOSES the cursor

自Java 7以来,您可以使用try-with-resource执行此操作并隐藏close()调用 - 但为了清楚地说明了什么等于在此处写旧样式