首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 游标打开后不关闭会有什么问题 [已结贴,结贴人:firein]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-22 16:22:44 楼主
    比如现在程序里调用一个存储过程,存储过程里使用并打开了游标,执行到最后没有关闭游标。

    但是程序里会关闭事务和连接。这样的话不关闭游标会有什么问题吗?
    80  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:40:291楼 得分:0
    回复看回复
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zoujp_xyz
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:42:272楼 得分:5
    释放资源
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tianhuo_soft
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:42:473楼 得分:10
    关闭事务 就关闭了 游标

    但是建议自己手动关闭

    不要希望windwos为我们做太多的事情
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kenryu3450
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:43:274楼 得分:10
    如果在服务器端执行,下次引用的时候会报错:提示游标已经open
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:55:295楼 得分:0
    引用 3 楼 tianhuo_soft 的回复:
    关闭事务 就关闭了 游标

    但是建议自己手动关闭

    不要希望windwos为我们做太多的事情


    关闭连接呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • marco08
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-08-22 17:03:176楼 得分:10
    关闭连接呢?

    --
    下次调用SP时一样有提示吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HEROWANG
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 17:04:177楼 得分:0
    断开此次连接后,游标就不存在了,但是在断开连接之前,会提示游标已经存在或者打开
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 17:22:248楼 得分:0
    引用 7 楼 HEROWANG 的回复:
    断开此次连接后,游标就不存在了,但是在断开连接之前,会提示游标已经存在或者打开

    啊哦 这样的话 不关闭游标也没大碍嘛~!~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 17:22:469楼 得分:0
    引用 6 楼 marco08 的回复:
    关闭连接呢?

    --
    下次调用SP时一样有提示吧

    怎么说法不一样
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ybkenan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 17:27:4610楼 得分:10
    沒事的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cxmcxm
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 20:57:3811楼 得分:10
    如果连接已关闭,就没事。
    最好手动关闭并释放,养成编程好习惯
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zbc1009
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 22:12:5412楼 得分:10
    从MSDN摘抄,然后用很憋的水平翻译了一下。。。

    LOCAL cursor
    Specifies that the scope of the cursor is local to the batch, stored procedure, or trigger in which the cursor was created. The cursor name is only valid within this scope. The cursor can be referenced by local cursor variables in the batch, stored procedure, or trigger, or a stored procedure OUTPUT parameter. An OUTPUT parameter is used to pass the local cursor back to the calling batch, stored procedure, or trigger, which can assign the parameter to a cursor variable to reference the cursor after the stored procedure terminates. The cursor is implicitly deallocated when the batch, stored procedure, or trigger terminates, unless the cursor was passed back in an OUTPUT parameter. If it is passed back in an OUTPUT parameter, the cursor is deallocated when the last variable referencing it is deallocated or goes out of scope.
    作用域为一个scope。cursor仅在当前scope有效。可以被当前scope内的局部cursor变量引用,也可以作为SP的输出参数。作为输出参数时,就是把该cursor返回给调用着。cursor在当前scope结束时隐式的清除,当作为SP输出参数时有点特殊,是当引用它的变量清除时清除,或者调用的scope结束时清除。(scope是指一个batch,或SP,或trigger,scope <session or connection)

    GLOBAL cursor
    Specifies that the scope of the cursor is global to the connection. The cursor name can be referenced in any stored procedure or batch executed by the connection. The cursor is only implicitly deallocated at disconnect.
    作用域是connection。可以被当前connection内的所有scope访问。当连接结束时候清除。

    总之,connection结束时候肯定已经清除了cursor.

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • regithanhu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-23 09:02:4813楼 得分:5
    传说没有影响!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tianhuo_soft
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-23 10:00:2314楼 得分:10
    SQL code
    CREATE PROCEDURE [dbo].[pro_CURSOR] AS BEGIN --声明一个游标 DECLARE MyCURSOR CURSOR FOR SELECT login_date FROM table --打开游标 open MyCURSOR close MyCURSOR deallocate MyCURSOR return 0 end
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved