2011-09-20 123 views
1

如何使用x attributesn rows like创建表?在SQL Server 2008中创建测试表

例如:

x = 4 , and n = 10 


att1 att2 att3 att4 
---------------------- 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
1  2  3  4 
+0

您只能使用SSMS或可以编写脚本/应用程序吗? –

回答

1
declare @x int = 4, @n int = 10 
declare @strg nvarchar(1000) = 'create table myTable (' 
declare @i int = 1 

while @i<= @x 
begin 
    set @strg = @strg + 'att' + cast(@i as varchar(5))+ ' int default ' + CAST(@i as varchar(5)) + ',' 
    set @i = @i + 1 
end 

set @strg = SUBSTRING(@strg, 1, LEN(@strg)-1) + ')' 
-- this creates your table 
exec sp_executesql @strg 


-- now lets insert rows 
set @i = 0 

while @i < @n 
begin 
    INSERT INTO myTable DEFAULT VALUES; 
    set @i = @i + 1 
end 

-- lets check 
select * 
from myTable 
1

以下脚本。你可以把它放到存储过程中,或者保持原样。你所要做的就是更新最初的列和行值。

DECLARE 
@cols INT = 4, 
@rows INT = 10, 
@tablename VARCHAR(20) = 'TestTable' 


DECLARE 
@i INT = 1, 
@j INT = 1, 
@sql NVARCHAR(MAX) = 'create table ' + @tablename + '(' 

WHILE(@i <= @cols) 
BEGIN 
    SET @sql = @sql + 'att' + CAST(@i AS VARCHAR(10)) + ' VARCHAR(10)' 
    IF NOT @i = @cols 
    BEGIN 
     SET @sql = @sql + ', ' 
    END 
    SET @i = @i + 1 
END 

SET @sql = @sql + ')' 

EXECUTE sp_executesql @sql 

SET @sql = 'INSERT INTO ' + @tablename + ' VALUES' 

WHILE(@j <= @rows) 
BEGIN 
    SET @i = 1 
    SET @sql = @sql + '(' 
    WHILE(@i <= @cols) 
    BEGIN 
     SET @sql = @sql + '''' + CAST(@i AS VARCHAR(10)) + '''' 
     IF NOT @i = @cols 
     BEGIN 
      SET @sql = @sql + ', ' 
     END 
     SET @i = @i + 1 
    END 
    IF NOT @j = @rows 
    BEGIN 
     SET @sql = @sql + '), ' 
    END 
    SET @j = @j + 1 
END 

SET @sql = @sql + ')' 

EXECUTE sp_executesql @sql 

希望这会有所帮助。

相关问题