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 : 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
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
??????