首页 > 解决方案 > 通过“while”或过程创建多个表

问题描述

我正在尝试创建一个过程来一次创建多个表,或者使用一段时间或另一个命令。

这是我必须创建的数据库,但我想知道是否有更快的方法通过循环来完成它:

这是我必须创建的数据库,但我想知道是否有更快的方法通过循环来完成

列字段或表中字段的创建是一样的。命名创建的表时会出现问题,因为有几个。

declare @i int = 1
while (@i <= 11)
begin
    declare @nameoftable nvarchar(50)
    set @nameoftable ='dbo'+ '.' + 'tbl_' + convert(nvarchar, @i) + '000_Capitulo_100'
    print @nameoftable

    create table @nameoftable
    (
    cap100ID int primary key not null,
    ccdd int not null,
    ccpp int not null,
    ccdi int not null,
    tipoVia nvarchar(20) not null,
    nombVia nvarchar(50) not null
    )

    set @i = @i + 1
end;

这是迄今为止我在 sql server 管理中推进的代码。

标签: sqlsql-server

解决方案


同意关于拥有多个具有相同结构的表以及它可能导致的问题的评论,但如果你真的需要这样做,你可以使用EXEC.

declare @i int = 1
while (@i <= 11)
begin

    declare @nameoftable nvarchar(50)
    declare @sqlCommand nvarchar(255)

    set @nameoftable ='dbo'+ '.' + 'tbl_' + convert(nvarchar, @i) + '000_Capitulo_100'

    SET @sqlCommand = 'create table ' + @nameoftable + 
                      '(cap100ID int primary key not null,
                        ccdd int not null,
                        ccpp int not null,
                        ccdi int not null,
                        tipoVia nvarchar(20) not null,
                        nombVia nvarchar(50) not null)'

    EXEC (@sqlCommand)

    set @i = @i + 1

end;

推荐阅读