gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:54:17 28 4
gpt4 key购买 nike

我正在使用返回 REF CURSOR 的 Java 在 PL/SQL 中调用存储函数:

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 之前关闭光标

CLOSE approvers;
RETURN approvers;

我在 Java 中收到警告 - Cursor is Closed

看来我无法关闭 PL/SQL 存储函数中的游标。那么游标的关闭发生在哪里呢?

最佳答案

事实上,ResultSet游标。

 //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() 调用 - 但为了清楚起见,这里写的旧式是什么

关于java - 函数在 PL/SQL 中返回游标 - 在 Java 端或 PL/SQL 端关闭它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com