Création de table dynamiquement Transact-SQL
Bonjour à tous,
Je cherche, pour m'exercer, à créer dynamiquement en transact-SQL une table.
Le nombre et noms des colonnes varient en fonction des paramètres passé
à la procédure.
Exemple:
Si je passe 1 et 4 en paramètre, je voudrai que ma table soit créé avec 4 champs nomé TBL1, TBL2, TBL3, TBL4.
Si je passe 3 et 5 en paramètre, ma table devrai avoir 3 champs
nomé TBL3, TBL4,TBL5.
...
J'ai essayé des faire cela:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
create procedure creatTbl @fields char(5) as
create table TBL (@fields)
GO
create procedure fieldTbl @plage1 char(2), @plage2 char(2) as
declare @i int
declare @field char(5)
set @i = @plage1
--set @field = '('
while @i <= @plage2 begin
-- concataine chaque nom de champ et leurs type: tbl1 int, tbl2 int, ...
set @field = @field +'TBL'+ cast(@i as char(1)) +' int,'
set @i = @i + 1
end
--set @field = @field +')'
exec creatTbl @field
GO
exec fieldTbl 1,4 |
Mais ca ne fonctionne pas.
Msg erreur:
Ligne 5 : syntaxe incorrecte vers '@fields'.
Impossible d'ajouter des lignes à sysdepends pour la présente procédure stockée parce qu'elle dépend d'un objet absent 'creatTbl'. La procédure stockée va cependant être créée.
On peut faire cela:
create table TBL (@fields) ou create table TBL @fields
??????