while循环T-SQL中的联合选择语句

时间:2011-02-25 15:34:46

标签: tsql union cursors

我正在尝试使用游标动态生成结果集。以下是代码

        DECLARE           @ MilestoneName VARCHAR(100),
        @MilestoneSts  VARCHAR(100),
        @ProjectPre    VARCHAR(10),
        @ProjectID     VARCHAR(10),
        @Center        VARCHAR(20),
        @CenterPre     VARCHAR(20),
        @Source        VARCHAR(20),
        @Actual        INT;

SET @MilestoneName = null;
SET @MilestoneSts = null;
SET @ProjectPre = null;
SET @CenterPre  = null;

DECLARE s_cursor CURSOR FOR
SELECT ProjectID, Center, Source, Actual
FROM #MILESTONE


OPEN s_cursor
FETCH NEXT FROM s_cursor INTO @ProjectID, @Center, @Source, @Actual

WHILE @@FETCH_STATUS = 0
BEGIN

  SELECT @@FETCH_STATUS sts, @ProjectID PID, @Center Center, @Source Source, @Actual Actual 
  FETCH NEXT FROM s_cursor INTO @ProjectID, @Center, @Source, @Actual
END

CLOSE s_cursor
DEALLOCATE s_cursor  

然而,使用它我能够产生79行单行,但我想将所有这些行合并为一个结果..任何可能的解决方案都将受到高度赞赏..

1 个答案:

答案 0 :(得分:0)

只是检查一下,为什么要使用游标?

只需说出

就可以取代这个sproc
SELECT ProjectID, Center, Source, Actual
FROM #MILESTONE

但也许我在这里错过了什么?

如果您在代码中遗漏了逻辑,请查看以下帖子:Multi-statement Table Valued Function vs Inline Table Valued Function

GJ