: Parametre OUTPUT qui sort pas [SQL SERVER 2008] - SQL/NoSQL - Programmation
Marsh Posté le 20-01-2011 à 08:34:13
Ca marche tres bien ici.
Il manque un BEGIN et un END dans le IF de ta procedure mais je suppose que ca a ete effacé en simplifiant la proc.
Marsh Posté le 20-01-2011 à 09:25:59
Oui, désolé, je les ai oublié au passage.
Mon probleme demeure je suis obligé de préciser un default pour le parametre OUT, sinon, message d'erreur sur la ligne 0
A l'éxecution j'ai juste le renvoi du nombre de ligne affecté.
Le plus genant c'est le fait que je ne puisse recuperer la Param2 en sortie.
Erreur de ma part, voila mes appels test
EXEC toto @Param1 = 1, @Param2 OUTPUT
Msg 137, Niveau 15, État 2, Ligne 1
La variable scalaire "@Param2" doit être déclarée.
EXEC toto @Param = 1
Msg 201, Niveau 16, État 4, Procédure toto, Ligne 0
La procédure ou fonction 'toto' attend le paramètre '@Param2', qui n'a pas été fourni.
bug de management studio,
de sql server express 2008 R2.
Marsh Posté le 20-01-2011 à 13:20:00
Essaye ca:
Code :
|
Marsh Posté le 20-01-2011 à 22:44:28
Merci bcp, ca marche.
Remarque à caractere gle : je trouve dommage de redeclarer le Params2 a l'execution et de refaire un select pour le recuperer.
OUTPUT pas si OUTPUT que ca en fait.
Marsh Posté le 21-01-2011 à 07:32:33
En fait dans Exec toto @Param1 = 1, @Param2 OUTPUT
Les 2 arguments ne sont pas les meme, @Param1 est facultatif, il indique juste que la procedure doit mettre 1 dans l'argument @Param1, @Param2 par contre est une variable qui est passée a la procedure, et doit donc etre déclarée, c'est juste un hazard qu'elle a le meme nom que l'argument de la procedure.
Tu aurais aussi bien pu ecrire:
Code :
|
voir meme ca:
Code :
|
Mais la c'est plus tres clair
Marsh Posté le 22-01-2011 à 00:13:36
Yes, beaucoup plus clair.
Enfin compris le pourquoi, recuperer @truc sert a recuperer la variable (OUTPUT) de la procedure stockée, à l'execution.
Merci d'avoir pris le temps d'éclairer ma lanterne
Marsh Posté le 20-01-2011 à 01:41:26
[img]Bonjour,
Petit probleme de newbie avec une procédure stockée SQLSERVER 2008 R2,
Je déclare un parametre OUTPUT, et la procédure refuse de s'executer au motif que je n'ai pas préciser dans son execution la valeur de ce parametre est-ce normal ?
Quand tout se passe bien, et que ma ligne est inserée toujours pas de retour !
CREATE PROCEDURE toto
@Param1 INT,
@Param2 INT OUTPUT
AS
SET @Param2 = ( SELECT TOP 1 Param2 FROM maTable WHERE Param1 = @Param1)
IF @Param2 IS NULL
INSERT INTO maTable(Param1) VALUES(@Param1)
SET @Param2 = SCOPE_IDENTITY()
ELSE
RAISERROR('Il existe deja %d', 10, 1, @Param2)
Merci pour votre aide