Probleme ALTER TABLE DANS BOUCLE WHILE AVEC NOM DE TABLE DIFFERENT A CHAQUE ITER [Résolu]

Messages postés
11
Date d'inscription
mercredi 23 février 2005
Dernière intervention
1 novembre 2005
- - Dernière réponse : nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 1 nov. 2005 à 18:31
Bonjour, je travaille sous sql server et je dois écrire une procédure stockée qui:


-Récupere et enregistre dans la table "TableTemp" le nom de certaines table contenues dans ma base de données

-Parcourir la table "TableTemp" et pour chaque ligne , insérer deux colones dans la table correspondant au nom récupéré

-Supprimer la table "TableTemp"

Voici mon code:

CREATE PROCEDURE Ajout_Enregistrement

AS
CREATE TABLE TableTemp(
ID int(4) NOT NULL IDENTITY(1, 1),
Nom NVARCHAR(50),
PRIMARY KEY(ID)
)
INSERT INTO TableTemp(Nom)
SELECT name FROM sysobjects WHERE xtype like 'U' AND name like '%[_]%'


DECLARE @currentLine int
DECLARE @nbLine int
SELECT @currentLine = 1
SELECT @nbLine = (select count(*) from TableTemp)


WHILE @currentLine <= @nbLine
BEGIN
DECLARE @nomTable nvarchar(50)
SELECT @nomTable = (SELECT Nom FROM TableTemp WHERE [mailto:ID=@currentLine ID=@currentLine])


ALTER TABLE @nomTable
ADD newColumn nvarchar(50)
END


DROP TABLE TableTemp
GO

Mon proble se pose sur le "ALTER TABLE" car j'ai l'erreur "Syntaxe incorrecte vers @NomTable"

J'ai tout essayé (les guillemets, les quotes, les parentheses....) mais j'ai toujours le m^me probleme.

Si quelqu'un peux venir à mon secours ça serait vraiment top!
Merci d'avance!
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
3
Merci
Salut

Pour faire avancer le probleme voici quelques pistes
à explorer la creation de table temporaire est a faire
avec un # devant la table je pense que c'est plus rapide.


SELECT name FROM sysobjects into #tabletemp WHERE xtype like 'U' AND name like '%[_]%'

ensuite pour le parcours des tables tu peux utiliser les curseurs pour faire la boucle

apres pour les l'ajout des colonnes le ne pense pas que tu puis le faire comme cela

il faut faire la chaine de caractere
et apres appeler un
declare @strsql as varchar(4000)
set @strsql = ' ALTER TABLE ' + @nomTable + 'ADD newColumn nvarchar(50) END'
exec @strsql

et le probleme doit etre resolu.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nhervagault
Messages postés
11
Date d'inscription
mercredi 23 février 2005
Dernière intervention
1 novembre 2005
0
Merci
Ok super merci beaucoup!!

Ca marche tres bien en faisant exec(@strsql) et non exec @strsql car sinon @strsql est considérée comme une procédure stockée qui bien évidemment n'existe pas.

En tous les cas merci pour ton aide!
Commenter la réponse de cs_vds
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
J'avais oublié au passage pour les tables temporaires il faut les dropper

Voila pour le complément

Pour l'erreur c'est pas évident de repondre de tete
Commenter la réponse de nhervagault

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.