Open OutCursor For Select * From Sys_User;
请问游标在什么时候关闭,
如果接着在存储过程里面关闭, .net程序会报 ORA-24338: 未执行语句句柄,
难道只能在net程序中关闭connection的时候,游标才被关闭吗?
请各位高手给予解释
谢谢
29 个解决方案
#1
游标的使用一般就是: 声明游标-> 打开游标->提取数据->关闭游标。
过程里使用完关闭即可。
过程里使用完关闭即可。
#2
兄弟我不需要提取数据啊,我是直接返回一个输出out的游标参数
在存储过程里面,手动关闭游标,net里面会报错,得不到结果集
#3
循环结束后,就把游标关掉。end loop 这后
#4
各位,我这个只要取结果集,不需要循环
存储过程代码如下
关闭游标被我注释了,如果不注释的话,Net程序就要取不到结果集
存储过程代码如下
CREATE OR REPLACE Procedure GetUserData(Data_Cursor out pkg_Tool.CursorType) --返回out一个游标类型的参数
Is
Begin
Open Data_Cursor for 'Select * From Sys_User';
--这里不需要循环什么,我只要取整个结果集
--Close Data_Cursor; --如果这里关闭游标的话.net程序取不到结果集。
End GetUserData;
关闭游标被我注释了,如果不注释的话,Net程序就要取不到结果集
#5
提取完数据操作,关闭游标的,以释放占用系统资源.
#6
提取完数据操作,关闭游标的,以释放占用系统资源.
#7
怎么没有人知道吗
都没有测试过吗,什么时候才关闭游标
有没有什么测试工具测试游标的关闭情况
都没有测试过吗,什么时候才关闭游标
有没有什么测试工具测试游标的关闭情况
#8
以往开发时,返回数据集后游标也是不关的,可能是依靠ORACLE或.NET的自动回收机制吧
#9
楼上说了一句经验之谈,我也是同感,不能手动在过程里面关闭,现在就是不知道这个自动关闭原理,机制,怕浪费资源,最好有这方面的测试用例
#10
楼上说了一句经验之谈,我也是同感,不能手动在过程里面关闭,现在就是不知道这个自动关闭原理,机制,怕浪费资源,最好有这方面的测试用例
#11
在调用的。net或者java里关闭
。net里我忘记怎么关了,java里,游标对象。close就行了
。net里我忘记怎么关了,java里,游标对象。close就行了
#12
我也是这样的,在应用程序里面关闭连接,释放资源。
主要是没什么官方的文档说明,
另外oracle的游标数量也是有限制的,随说最大值可该
但是总是担心会耗尽所有游标
主要是没什么官方的文档说明,
另外oracle的游标数量也是有限制的,随说最大值可该
但是总是担心会耗尽所有游标
#13
.net的封装的ADO.net相关类会自动释放资源关闭游标
#14
楼上说的是,也只能解释为abo.net在connection.close()的时候,里面的机制自动释放游标资源
这方面的资料比较少,也没有官方的文档说明
这方面的资料比较少,也没有官方的文档说明
#15
直接close 游标名就可以了
#16
凡是说,在存储过程里面直接close cursor的,都没有编写程序调用的实际经验
关键是在存储过程里面close的话,存储过程就不会放回结果集给程序了
关键是在存储过程里面close的话,存储过程就不会放回结果集给程序了
#17
在外部程式调用时,不能直接关闭游标, 估计是一种委托管理机制吧, .net中是在close connection时释放的.
#18
你直到使用游标操作数据完成之后 ,在把游标close掉.
#19
其实不需要专门定义close cursor , 在遇到end时会自动关闭
#20
请问楼上的朋友,有证明的机制吗
#21
不过以个人认为应该是在程序方面、
ado.net的对象里面关闭的
如果在存储过程里面关闭的话,ado.net就得不到结果集
ado.net的对象里面关闭的
如果在存储过程里面关闭的话,ado.net就得不到结果集
#22
你的Open OutCursor For Select * From Sys_User;在哪执行的呀。
一般情况下,你上面这句和关闭游标的那句话,要放在同一段里执行,要不然就会出现问题。
建议是在存储过程里,把打开游标和关闭游标都写上。
一般情况下,你上面这句和关闭游标的那句话,要放在同一段里执行,要不然就会出现问题。
建议是在存储过程里,把打开游标和关闭游标都写上。
#23
呵呵,人家都说了,如果在过程中中关闭游标,调用时会报错?你用定义回答别人问题?
#24
我前几天也遇到过,在过程中关闭,java程序会报错!最后只有不关闭!
#25
楼上的才是真正测试过,有用过的人
没测试过的不要感觉说话
谢谢各位
#26
总结:
如果要返回参数游标的话,不要在存储过程里面关闭游标
否则,应用程序是得不到存储过程的返回值
如果要返回参数游标的话,不要在存储过程里面关闭游标
否则,应用程序是得不到存储过程的返回值
#27
还有一点貌似不同,java中用类直接调用可以,ibatis中调用就要返回这个游标才行(我做的时候是这样的,之前我没有返回他就给我报错,返回就好了,而用jdbc方式没有返回竟然都刻意 ,觉得有点不太理解)
#28
程序里边通过对CallableStatement对象的close释放游标资源
#29
.net里没有这个游标的对应句柄吗?没有相应对象吗?没有关闭的方法吗?
Java里这种游标用ResultSet获取,遍历之后直接关闭ResultSet,就是close cursor。
Java里这种游标用ResultSet获取,遍历之后直接关闭ResultSet,就是close cursor。
#1
游标的使用一般就是: 声明游标-> 打开游标->提取数据->关闭游标。
过程里使用完关闭即可。
过程里使用完关闭即可。
#2
兄弟我不需要提取数据啊,我是直接返回一个输出out的游标参数
在存储过程里面,手动关闭游标,net里面会报错,得不到结果集
#3
循环结束后,就把游标关掉。end loop 这后
#4
各位,我这个只要取结果集,不需要循环
存储过程代码如下
关闭游标被我注释了,如果不注释的话,Net程序就要取不到结果集
存储过程代码如下
CREATE OR REPLACE Procedure GetUserData(Data_Cursor out pkg_Tool.CursorType) --返回out一个游标类型的参数
Is
Begin
Open Data_Cursor for 'Select * From Sys_User';
--这里不需要循环什么,我只要取整个结果集
--Close Data_Cursor; --如果这里关闭游标的话.net程序取不到结果集。
End GetUserData;
关闭游标被我注释了,如果不注释的话,Net程序就要取不到结果集
#5
提取完数据操作,关闭游标的,以释放占用系统资源.
#6
提取完数据操作,关闭游标的,以释放占用系统资源.
#7
怎么没有人知道吗
都没有测试过吗,什么时候才关闭游标
有没有什么测试工具测试游标的关闭情况
都没有测试过吗,什么时候才关闭游标
有没有什么测试工具测试游标的关闭情况
#8
以往开发时,返回数据集后游标也是不关的,可能是依靠ORACLE或.NET的自动回收机制吧
#9
楼上说了一句经验之谈,我也是同感,不能手动在过程里面关闭,现在就是不知道这个自动关闭原理,机制,怕浪费资源,最好有这方面的测试用例
#10
楼上说了一句经验之谈,我也是同感,不能手动在过程里面关闭,现在就是不知道这个自动关闭原理,机制,怕浪费资源,最好有这方面的测试用例
#11
在调用的。net或者java里关闭
。net里我忘记怎么关了,java里,游标对象。close就行了
。net里我忘记怎么关了,java里,游标对象。close就行了
#12
我也是这样的,在应用程序里面关闭连接,释放资源。
主要是没什么官方的文档说明,
另外oracle的游标数量也是有限制的,随说最大值可该
但是总是担心会耗尽所有游标
主要是没什么官方的文档说明,
另外oracle的游标数量也是有限制的,随说最大值可该
但是总是担心会耗尽所有游标
#13
.net的封装的ADO.net相关类会自动释放资源关闭游标
#14
楼上说的是,也只能解释为abo.net在connection.close()的时候,里面的机制自动释放游标资源
这方面的资料比较少,也没有官方的文档说明
这方面的资料比较少,也没有官方的文档说明
#15
直接close 游标名就可以了
#16
凡是说,在存储过程里面直接close cursor的,都没有编写程序调用的实际经验
关键是在存储过程里面close的话,存储过程就不会放回结果集给程序了
关键是在存储过程里面close的话,存储过程就不会放回结果集给程序了
#17
在外部程式调用时,不能直接关闭游标, 估计是一种委托管理机制吧, .net中是在close connection时释放的.
#18
你直到使用游标操作数据完成之后 ,在把游标close掉.
#19
其实不需要专门定义close cursor , 在遇到end时会自动关闭
#20
请问楼上的朋友,有证明的机制吗
#21
不过以个人认为应该是在程序方面、
ado.net的对象里面关闭的
如果在存储过程里面关闭的话,ado.net就得不到结果集
ado.net的对象里面关闭的
如果在存储过程里面关闭的话,ado.net就得不到结果集
#22
你的Open OutCursor For Select * From Sys_User;在哪执行的呀。
一般情况下,你上面这句和关闭游标的那句话,要放在同一段里执行,要不然就会出现问题。
建议是在存储过程里,把打开游标和关闭游标都写上。
一般情况下,你上面这句和关闭游标的那句话,要放在同一段里执行,要不然就会出现问题。
建议是在存储过程里,把打开游标和关闭游标都写上。
#23
呵呵,人家都说了,如果在过程中中关闭游标,调用时会报错?你用定义回答别人问题?
#24
我前几天也遇到过,在过程中关闭,java程序会报错!最后只有不关闭!
#25
楼上的才是真正测试过,有用过的人
没测试过的不要感觉说话
谢谢各位
#26
总结:
如果要返回参数游标的话,不要在存储过程里面关闭游标
否则,应用程序是得不到存储过程的返回值
如果要返回参数游标的话,不要在存储过程里面关闭游标
否则,应用程序是得不到存储过程的返回值
#27
还有一点貌似不同,java中用类直接调用可以,ibatis中调用就要返回这个游标才行(我做的时候是这样的,之前我没有返回他就给我报错,返回就好了,而用jdbc方式没有返回竟然都刻意 ,觉得有点不太理解)
#28
程序里边通过对CallableStatement对象的close释放游标资源
#29
.net里没有这个游标的对应句柄吗?没有相应对象吗?没有关闭的方法吗?
Java里这种游标用ResultSet获取,遍历之后直接关闭ResultSet,就是close cursor。
Java里这种游标用ResultSet获取,遍历之后直接关闭ResultSet,就是close cursor。