首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 数 据 库 > MsSQL > 正文
  • Transact-SQL不使用游标的两个循环方法
      2008-5-12  来源:网络资源  编辑:Jsbulo  热度:

    方法一:

    SELECT * INTO #t1 FROM dbo.HorseBase

    DECLARE @id int

    DECLARE @t2 table (id int)

    WHILE (exists(SELECT HorseNumber FROM #t1))

    BEGIN

    SELECT TOP 1 @id=HorseNumber FROM #t1

    INSERT INTO @t2 SELECT HorseNumber FROM #t1 WHERE HorseNumber=@id

    DELETE FROM #t1 WHERE HorseNumber=@id

    END

    DROP Table #t1

    方法二:

    DECLARE @r int

    DECLARE @number int;

    DECLARE @t2 table ( [name] nvarchar(200))

    SELECT ROW_NUMBER() OVER (ORDER BY [Name] ) AS number,[name] INTO #nn1 FROM dbo.tbl_Entity

    SELECT @number=MAX(number) FROM #nn1

    SET @r=1

    WHILE (@r<=@number)

    BEGIN

    INSERT INTO @t2 SELECT [name] FROM #nn1 WHERE number=@r

    SET @r=@r+1

    END

    DROP TABLE #nn1

    注:ROW_NUMBER() 在分页存储过程中也是比较好用的。