我使用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存储函数中的光标。那么光标的关闭在哪里发生?
答案 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()调用 - 但为了清楚地说明了什么等于在此处写旧样式