Create dynamique de colonnes [Résolu]

stefsoft 119 Messages postés lundi 15 avril 2002Date d'inscription 28 novembre 2008 Dernière intervention - 15 déc. 2006 à 10:59 - Dernière réponse : stefsoft 119 Messages postés lundi 15 avril 2002Date d'inscription 28 novembre 2008 Dernière intervention
- 15 déc. 2006 à 11:48
Bonjour,
je crée un table dynamiquement dans ma procédure stockée
CREATE TABLE #table (id int, nom nvarchar(30))
je veux lui ajouter des colonnes dynamiquement
le nombre de colonne dépend d'une autre table (nombre ligne de l'autre table = nombre de nouvelles colonnes de ma table dynamique)

voici le code qui me génère une erreur


SET @I=@NbOfRow

WHILE @I>0

BEGIN
   SET @RowName=
'H' +
rtrim(
convert(
nvarchar(9),@I))

   ALTER TABLE #Sortie
ADD @RowName

int
   SET @I =@I-1

END

Comment peut on créer une colonne à partir d'une variable ?
Afficher la suite 

2 réponses

Répondre au sujet
vlaad 80 Messages postés mardi 29 juin 2004Date d'inscription 18 décembre 2006 Dernière intervention - 15 déc. 2006 à 11:35
+3
Utile
Bonjour,
Je pense que l'analyseur n'azime pas que tu lui passe une variable locale comme variable locale.
Le truc est de passer tout tes paramètres dans une chaine, et d'executer la procédure stockée sp_executesql.
Elle permet d'executer un lot d'instruction sql créé dynamiquement.
Ton code ressemblerait alors a cela.

SET @I= @NbOfRow

declare @sql_command nvarchar(500);
set @sql_command='';

WHILE @I>0

BEGIN
   SET @RowName=
'H' +
rtrim(
convert(
nvarchar(9),@I))

   set @sql_command='ALTER TABLE '+ #Sortie + 'ADD '+convert(varchar(100), @RowName ) +'

int'
exec sp_executesql  @sql_command

   SET @I =@I-1

END

Tiens moi au courant.
Les programmeurs sont rois....Ceux qui ne croient pas en nous sont des fous...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de vlaad
stefsoft 119 Messages postés lundi 15 avril 2002Date d'inscription 28 novembre 2008 Dernière intervention - 15 déc. 2006 à 11:48
0
Utile
Merci cela fonctionne
Commenter la réponse de stefsoft

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.