zoukankan      html  css  js  c++  java
  • 数据库游标 遥远的青苹果

    /****** Script for SelectTopNRows command from SSMS  ******/
    --找出成E1-T11-C1-T21-E2-T22-C2-T12-E1环状的拓扑设备
    --作者:lixinhia
    --2011年10月29日15:11:51

    --Create Proc FindAllDepulateEquipment

    --as

    declare  @currentEquimentTerminal_A varchar(150)--当前设备端点A
    declare  @currentEquimentTerminal_B varchar(150)--当前设备端点B
    declare  @nextEquipmentTerminal_A varchar(150)--连接设备端点A
    declare  @nextEquipmentTerminal_B varchar(150)--连接当前端点B
    declare  @currentConnectivenode varchar(150)--当前连接点
    declare  @nextConnectivenode varchar(150)--连接连接点
    declare  @currentEquipment varchar(150)--当前设备
    declare  @nextEquipment  varchar(150)
    declare  @locaName varchar(150)
    declare  @subStation varchar(150)
    declare  @voltageLevel varchar(150)
    declare  @compareConnetiveNode varchar(150)
    declare  @compareEquipment varchar(150)
    --declare  @forCount int --循环总数
    --declare  @for int=1
    declare cr_cursor cursor   --1.定义游标
    --fast_forward readonly
     For SELECT distinct [端点]       
          ,[connectivityNode] 
          ,conductingEquipment   
          ,[localName] 
          ,[substationName]  
          ,[voltageLevelValue]
      FROM [AxyPowerSystem].[dbo].[AllTerminalEuipment]
      --for readonly--作为只读
     
    open cr_cursor   --2.打开游标
     
    FETCH     --3.提取游标
    FROM  cr_cursor
    into
      @currentEquimentTerminal_A
    , @currentConnectivenode
    , @currentEquipment
    , @locaName
    , @subStation
    , @voltageLevel

    while @@fetch_status=0
    begin


     declare  secondtablecur  cursor
      for
        SELECT top(1)  w.[端点]       
                    ,w.conductingEquipment 
       FROM [AxyPowerSystem].[dbo].[AllTerminalEuipment2] as w
       where w.[connectivityNode]=@currentConnectivenode   --同连接点节点另外的的设备
       and w.[端点]!=@currentEquimentTerminal_A
       and  w.conductingEquipment!=@currentEquipment
      open secondtablecur --2 opne
       fetch from   secondtablecur             --2 fetch   
      into
      @nextEquipmentTerminal_A      
      ,@nextEquipment
       while @@fetch_status=0
       begin
         declare thridtabelCursor cursor
         for
          SELECT    top (1)  [端点]  ,[connectivityNode] 
          FROM [AxyPowerSystem].[dbo].[AllTerminalEuipment3]
          where [connectivityNode]=@nextConnectivenode
          and [端点]!=@nextEquipmentTerminal_A
           and  conductingEquipment=@nextEquipment
     
          open thridtabelCursor --open 3
          fetch  from thridtabelCursor--fetch 3          
          into  @nextEquipmentTerminal_B ,@nextConnectivenode--
          while @@FETCH_STATUS=0
          begin
                  
          declare fourtableCursor cursor
          for   SELECT    top (1)  [端点]  ,conductingEquipment 
          FROM [AxyPowerSystem].[dbo].[AllTerminalEuipment4]
          where [connectivityNode]=@nextConnectivenode
           and [端点]!=@nextEquipmentTerminal_B
           
           open  fourtableCursor -----4
           fetch from fourtableCursor
           into @currentEquimentTerminal_B,@compareEquipment----接头的@compareEquipment,@currentEquimentTerminal_B不恰当
           
           while @@FETCH_STATUS=0
            begin
              begin--业务逻辑
             
                    if @compareEquipment <> ''and @currentEquipment<>''
                    begin
       
                    print   @currentEquimentTerminal_A
                    print @currentConnectivenode
                    print @currentEquipment
                    print @locaName
                    print @subStation
                    print @voltageLevel

       
               --   if(isnull(rtrim(ltrim(@compareConnetiveNode)),'')=isnull(rtrim(ltrim(@currentConnectivenode)),'') )
                --     select @currentEquimentTerminal_A
               --, @currentConnectivenode
               --, @currentEquimentTerminal_B       
               --      ,@nextConnectivenode 
               --      ,@nextEquipment
                --      into  [AxyPowerSystem].[dbo].haveProblem
           
           
                   set  @currentEquimentTerminal_A=''
                   set  @currentEquimentTerminal_B=''
                   set  @nextConnectivenode =''
                   set  @currentEquipment =''
                   set  @nextEquipment  =''
                   set  @locaName =''
                   set  @subStation =''
                   set  @voltageLevel =''
                   set  @compareConnetiveNode =''
                   end ;--ene if
            
            
            
             end--end 业务逻辑
           
             fetch next from fourtableCursor
            into @currentEquimentTerminal_B,@compareEquipment----接头的@compareEquipment,@currentEquimentTerminal_B不恰当
           
            end;--end for while 
           close fourtableCursor;
           deallocate fourtableCursor;
                 

         
          fetch  next from thridtabelCursor--fetch 3 next fentch
          into @nextEquipmentTerminal_B ,@nextConnectivenode--
          end ;--end third while
         close thridtabelCursor --end third  4.关闭游标
         deallocate thridtabelCursor --end third5.释放游标
       
         
       fetch next from   secondtablecur             --end two  next fetch   
         into @nextEquipmentTerminal_A ,@nextEquipment
      end --end two while       
          close secondtablecur --end two   4.关闭游标
          deallocate secondtablecur --end two5.释放游标
     

    FETCH next    --3.提取游标
    FROM  cr_cursor
    into
      @currentEquimentTerminal_A
    , @currentConnectivenode
    , @currentEquipment
    , @locaName
    , @subStation
    , @voltageLevel
    end; --end  first while
    close cr_cursor --4.关闭游标
    deallocate cr_cursor --5.释放游标

     自己写的一个三层嵌套的游标 居然 放在计算机上 跑不动! 不知道问题如何!

      


     

  • 相关阅读:
    having——至少被订购过两回的订单
    产品——仓库表查询
    SQL 聚集函数使用
    select count(*)和select count(1)的区别 (转)
    SpringAOP 通知(advice)
    Spring AOP 实现原理与 CGLIB 应用
    cglib 动态代理基础篇
    模仿Struts2的Interceptor拦截器实现
    利用JDK动态代理机制实现简单拦截器
    java多线程总结二:后台线程(守护线程)
  • 原文地址:https://www.cnblogs.com/lixinhai/p/2228609.html
Copyright © 2011-2022 走看看