Create dynamique de colonnes [Résolu]

stefsoft
Messages postés
119
Date d'inscription
lundi 15 avril 2002
Dernière intervention
28 novembre 2008
- 15 déc. 2006 à 10:59 - Dernière réponse : stefsoft
Messages postés
119
Date d'inscription
lundi 15 avril 2002
Dernière intervention
28 novembre 2008
- 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 

Votre réponse

2 réponses

Meilleure réponse
vlaad
Messages postés
80
Date d'inscription
mardi 29 juin 2004
Dernière intervention
18 décembre 2006
- 15 déc. 2006 à 11:35
3
Merci
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...

Merci vlaad 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de vlaad
stefsoft
Messages postés
119
Date d'inscription
lundi 15 avril 2002
Dernière intervention
28 novembre 2008
- 15 déc. 2006 à 11:48
0
Merci
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.