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
De nouvelles questions
sql-server
Microsoft SQL Server est un système de gestion de base de données relationnelle (SGBDR). Utilisez cette balise pour toutes les éditions de SQL Server, y compris Compact, Express, Azure, Fast-track, APS (anciennement PDW) et Azure SQL DW. N'utilisez pas cette balise pour d'autres types de SGBD (MySQL, PostgreSQL, Oracle, etc.). N'utilisez pas cette balise pour des problèmes de développement logiciel et mobile, sauf si elle est directement liée à la base de données.