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:
Mais ca ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
??????
Partager