CREATE TABLE a(aa int)
INSERT INTO dbo.a
        ( aa )
VALUES  ( 3 -- aa - int
          )
           
 
 
 
declare @i INT
DECLARE @count INT
DECLARE @sql1 VARCHAR(2000),@sql2 VARCHAR(2000),@sql3 VARCHAR(2000)
select @sql2=''
SELECT @count=aa FROM a
 
--PRINT @sql1
set @i=1
while @i<=@count
begin
SET @sql2=@sql2+' union all select * from a'
 
--PRINT @sql2   ----1
set @i=@i+1
--PRINT @sql2   ----2
 
end
PRINT @sql2   ------3这样??

解决方案 »

  1.   


    CREATE TABLE a(aa int)
    INSERT INTO dbo.a
            ( aa )
    VALUES  ( 3 -- aa - int
              )
              declare @i INT
    DECLARE @count INT
    DECLARE @sql1 VARCHAR(2000),@sql2 VARCHAR(2000),@sql3 VARCHAR(2000)
    SELECT @count=aa FROM a--PRINT @sql1
    set @i=1
    while @i<=@count
    begin
    SET @sql2=' union all select * from a'--PRINT @sql2   ----1--PRINT @sql2   ----2
    set @i=@i+1
    PRINT @sql2   ------3
    END
    DROP TABLE a
    GO
      

  2.   


    没有明白,为什么最后
    要DROP TABLE a
      

  3.   

    3是循环完了才print的,与循环无关,1和2应该是3条
      

  4.   


    没有明白,为什么最后
    要DROP TABLE a哦 这个是我的习惯 不喜欢留不相干的表在数据库中  你不加这个也可以。
      

  5.   


    没有明白,为什么最后
    要DROP TABLE a那是干掉表a的,人家又不要留着那张表
      

  6.   


    没有明白,为什么最后
    要DROP TABLE a那是干掉表a的,人家又不要留着那张表
    ...我就说,,,好吧,,,
      

  7.   


    1,2都显示的是2条? 应该是3条吧,  3为什么显示1条 那是因为在循环里面只是给标量赋值,但没有输出,而且在end(也就是循环外面)后面输出的,所以只有一条