Probleme de variable dans une procédure stockée

mastercatz Messages postés 193 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 12 août 2010 - 21 mars 2006 à 09:08
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 23 mars 2006 à 10:45
Bonjour
A chaque fois que j'essaye de créer ma procédure stockée j'obtient la même erreur (parmis d'autres):
Msg 1087, Level 15, State 2, Procedure vc_changedatatype, Line 11
La variable de table '@NomTable' doit être déclarée.

Or @NomTable est le nom d'un parametre de la procédure. Je ne vois pas vraiment comment faire (pour nota je débute vraiment dans ce domaine ^^).
Pour info cette procédure sera utilisée à partir d'un programme, d'où la présence de RETURN, pour informer le programme de l'état de la procédure.
Voici la procédure en question :

USE project;
GO
IF OBJECT_ID ( 'vc_changedatatype', 'P' ) IS NOT NULL
DROP PROCEDURE vc_changedatatype;
GO
CREATE PROCEDURE vc_changedatatype
@NomTable nvarchar(50),
@NomColonne nvarchar(50),
@Genre nvarchar(50)
AS
SET NOCOUNT ON;
BEGIN TRANSACTION
begin try
if @Genre = 'int'
-- Suppression des non numériques et des non entiers
UPDATE @NomTable SET @NomColonne = NULL WHERE ((@NomColonne LIKE '%.%') OR (@NomColonne LIKE '%,%') OR (ISNUMERIC(@NomColonne) <> 1));
if @Genre = 'real'
-- Suppression des non numériques
UPDATE @NomTable SET @NomColonne NULL WHERE ISNUMERIC(@NomColonne) 1;
else
return (0)
-- Une fois le tri fait, on met à jour le type de données
ALTER TABLE @NomTable ALTER COLUMN @NomColonne @typedonnee;
end try

begin catch
ROLLBACK TRANSACTION
RETURN (0)
end catch

COMMIT TRANSACTION
return (1)
GO

Je pense que je n'utilisa pas bien les variables dans les lignes UPDATE mais je ne vois pas pourquoi .....
Merci d'avance.

3 réponses

Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
21 mars 2006 à 09:53
Bonjour,

merci de détruire ton double post ;o)
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
23 mars 2006 à 10:43
salut

je ne pense pas que tu puisse utiliser directement ta variable pour remplacer un nom de table ou de champs

du moins pas comme ceci.


désolé, je n'ai pas de solution a te proposer, mais deja c'est de ce coté la qu'il faut que tu cherche (il y a peut etre moyen d'utiliser les ID des tables et des champs en allant les chercher dans les tables systeme)
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
23 mars 2006 à 10:45
oups...
j'avais pas vu le deuxieme post...
au mons maintenant je sais quelle solution apporter si je me trouve face a ce type de pb :)
0
Rejoignez-nous