在多个存储过程中都定义了 游标 “Cur”   DECLARE Cur CURSOR FOR当这几个存储过程同时执行时,游标会不会出问题。   游标的名字都叫做。“Cur”。存储过程开始判断游标是否存在。if exists(select * from MASTER.dbo.syscursors where cursor_name='Cur')
    begin
print '游标已存在,删除游标'
    deallocate  Cur
    end
这几个存储过程会不会相互影响???

解决方案 »

  1.   

    if exists(select * from MASTER.dbo.syscursors where cursor_name='Cur')
        begin
    print '游标已存在,删除游标'
        deallocate  Cur
        end Select  @DADayNow = CONVERT(varchar(100), GETDATE(), 112)
    --print left(@DADayNow,6) DECLARE Cur CURSOR FOR --控制只取前25000行数据做计算
    SELECT TOP 500 DANo,UpdateTime,LogTime,DataType,DAType,DAYear,DAMonth,DADay,DAHour,CollegeNo,CampusNo,BuildingNo,BuildingType,SumQty,EType,EIndex,
    ESubitem,ESubitem1,ESubitem2,Unit,Lable,Note FROM T_DAList 多个存储过程的多个游标都是查询的“T_DAList”表,只是查询的数据记录不同。这种情况也会锁表吗????还是等数据处理完后,删除改条数据的时候它才会锁表。

    WHERE DataType='Public'  and   DAType='h' and  ESubitem!=''  ORDER   BY   (DAYear+DAMonth+DADay+DAHour)    OPEN Cur
      

  2.   

    游标名仅在当前连线中有效,多进程并发执时不互相影响.问题2与游标的类型有关,建议了解一下. 参考http://www.cnblogs.com/jiajiayuan/archive/2011/07/14/2106341.html