Probleme de variable dans une procédure stockée [Résolu]

mastercatz 193 Messages postés jeudi 4 décembre 2003Date d'inscription 12 août 2010 Dernière intervention - 21 mars 2006 à 09:04 - Dernière réponse : mastercatz 193 Messages postés jeudi 4 décembre 2003Date d'inscription 12 août 2010 Dernière intervention
- 21 mars 2006 à 11:05
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 suppose que j'utilise mal les variables mais je ne sais aps vraiment pourquoi .....
Merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Mindiell 559 Messages postés jeudi 25 juillet 2002Date d'inscription 5 septembre 2007 Dernière intervention - 21 mars 2006 à 10:24
3
Merci
Oups,

j'avais pas bien regardé, c'est normal. Il faut que tu déclares une variable @Requete et que tu fasses ca :

SET @Requete = 'SELECT * FROM ' + @NomTable + ' WHERE bla bla bla... '
EXECUTE (@Requete)

Ca devrait marcher ;)

Merci Mindiell 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de Mindiell
Mindiell 559 Messages postés jeudi 25 juillet 2002Date d'inscription 5 septembre 2007 Dernière intervention - 21 mars 2006 à 09:55
0
Merci
Toutes mes préocédures stockées débutent ainsi :

CREATE PROCEDURE vc_changedatatype
@NomTable nvarchar(50) = '',
@NomColonne nvarchar(50) = '',
@Genre nvarchar(50) = ''

Histoire d'initialiser les valeurs. A essayer donc ;o)
Commenter la réponse de Mindiell
mastercatz 193 Messages postés jeudi 4 décembre 2003Date d'inscription 12 août 2010 Dernière intervention - 21 mars 2006 à 10:11
0
Merci
Non ca ne change rien du tout
Je pense plutot en fait que l'erreru est du au fait que j'essaye d'indiquer le nom de la table et le nom de la colonne avec une variable dans la requette UPDATE.
Commenter la réponse de mastercatz
mastercatz 193 Messages postés jeudi 4 décembre 2003Date d'inscription 12 août 2010 Dernière intervention - 21 mars 2006 à 11:05
0
Merci
Bah voila c'est bien ce qu'il me fallait, merci pour ta réponse.
Commenter la réponse de mastercatz

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.