Je voudrais créer plusieurs tables avec les mêmes noms de colonnes. Le nom des tables serait table1, table2, table3, etc. Quelqu'un peut-il m'aider à corriger la partie 'table @ cnt' dans la ligne de code 4 ?.

declare @cnt int = 0;
while @cnt < 7
begin 

CREATE TABLE table@cnt(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)   
);

set @cnt = @cnt + 1;
end;
1
Sonam 21 avril 2017 à 07:22

3 réponses

Meilleure réponse
declare @cnt int = 0;
while @cnt < 7
begin 

declare @q nvarchar(max) = 'CREATE TABLE table' + convert(varchar(10), @cnt) + '(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)   
);'

exec (@q)

set @cnt = @cnt + 1;
end;
1
artm 21 avril 2017 à 04:57

Vous pouvez utiliser une requête dynamique comme celle-ci

DECLARE @cnt int = 1
DECLARE @TableName varchar(20) = CAST(@cnt as varchar(20))

DECLARE @query nvarchar(max) = 
                   N'CREATE TABLE '+  @TableName + 
                   ' (
                   PersonID int,
                   LastName varchar(255),
                   FirstName varchar(255),
                   Address varchar(255),
                   City varchar(255)   
                   )'
EXEC (@query)
0
TriV 21 avril 2017 à 07:10
DECLARE @cnt int = 1
While(@cnt <=10)
Begin
DECLARE @query nvarchar(max) = 
                   N'CREATE TABLE '+'table_'+CASt(@cnt  AS VARCHAR(10))+
                   ' (
                   PersonID int,
                   LastName varchar(255),
                   FirstName varchar(255),
                   Address varchar(255),
                   City varchar(255)   
                   )'

EXEC (@query)
SET @cnt=@cnt+1
END
0
user7715598user7715598 21 avril 2017 à 07:15