需要在服务器端遍历时只能使用游标,别无选择,即使牺牲性能。(就这句)
不知道SQLSERVER2005这方面有没有增强,请用过的朋友指教。   
(分数不多省着用,呵呵)

解决方案 »

  1.   

    在很多场合,用临时表或表变量也可以替代游标昨时表用在表没有标识列(int)的情况下.
    在表有标识列(int)的情况下可以用表变量,当然也可以用临时表.利用临时表或表变量的原因时,生成一个连续的列
    对于临时表是使用
    SELECT .... ,IDENTITY(int) NewID INTO #tmp SELECT ... FROM YourTable对于YourTable含有标识列(比如字段名为ID)时,可以
    INSERT @tmpTable
    SELECT ..., NewID=(SELECT COUNT(*) FROM YourTable b WHERE b.id<=a.id) FROM YourTable a当然,也可以不写入表变量而使用子查询.当有了从 1--你的记录数连续的NewID时, 你就可以用循环来操作每一条记录了.
    这个NewID你就可以当它是指针标识.
    DECLARE @i INT,@cnt INT
    SET @i=1
    SELECT @cnt=COUNT(*) FROM YourTable
    WHILE @i<@cnt
         BEGIN
               SELECT .... FROM #tmp(或@tmpTable依上面情况不同) WHERE NewID=@i
               ...
               SET @i=@i+1
         ENDDROP TABLE...