Retourner un code retour

Le
Delf
Bonsoir.

Je ne suis pas expert en Sql je souhaite retourner un code erreur
suite à une procédure stockée.

Voici son code :

ALTER PROCEDURE [dbo].[wb_ActivateAccount]
(
@Login VARCHAR(12),
@Password VARCHAR(16)
)

AS
BEGIN

DECLARE @CodeReturn BIT

IF (EXISTS(SELECT COUNT(1) FROM Account WHERE Login = @Login AND
Password = @Password))
BEGIN

UPDATE Account SET IsActivated = 'True' WHERE Login = @Login AND
Password = @Password

SELECT @CodeReturn = 1

END
ELSE
BEGIN

SELECT @CodeReturn = 0

END

END

Via l'Entreprise Manager (je n'es pas son nom en tête en 2005),
j'obtiens toujous 0 même quand le UPDATE est réalisé je dois mal m'y
prendre

--
Delf
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LE BARBIER
Le #11857751
Salut Delf

Pourquoi ne pas utiliser la fonction RETURN( ) ?


Gilles


Delf a écrit :
Bonsoir.

Je ne suis pas expert en Sql... je souhaite retourner un code erreur
suite à une procédure stockée.

Voici son code :

ALTER PROCEDURE [dbo].[wb_ActivateAccount]
(
@Login VARCHAR(12),
@Password VARCHAR(16)
)

AS
BEGIN

DECLARE @CodeReturn BIT

IF (EXISTS(SELECT COUNT(1) FROM Account WHERE Login = @Login AND
Password = @Password))
BEGIN

UPDATE Account SET IsActivated = 'True' WHERE Login = @Login AND
Password = @Password

SELECT @CodeReturn = 1

END
ELSE
BEGIN

SELECT @CodeReturn = 0

END

END

Via l'Entreprise Manager (je n'es pas son nom en tête en 2005),
j'obtiens toujous 0 même quand le UPDATE est réalisé... je dois mal m'y
prendre...



Delf
Le #11857671
Gilles LE BARBIER a émis l'idée suivante :

Pourquoi ne pas utiliser la fonction RETURN( ) ?



Car elle lne me retourne rien... dans mon SqlDataReader côté DOTNET, je
ne récupère pas de ligne/colonne...

Avec le SELECT 1, ça fonstionne, il y avait une erreur dans le IF, il
fallait mettre SELECT 1 et non SELECT COUNT(1) qui retourne toujours un
résultat...

--
Delf
Philippe TROTIN [MS]
Le #11857661
SELECT @CodeReturn = 1 ou 0 va affecter à la variable @CodeReturn la valeur
0 ou 1.

Si vous faisiez tout simplement :

SELECT 1 AS CodeReturn
ou
SELECT 0 AS CodeReturn


Autre solution : Définir une variable OUTPUT.


Cordialement
_______________________________

Philippe TROTIN
Microsoft Services France
_______________________________
"Delf" news:
Bonsoir.

Je ne suis pas expert en Sql... je souhaite retourner un code erreur suite
à une procédure stockée.

Voici son code :

ALTER PROCEDURE [dbo].[wb_ActivateAccount]
(
@Login VARCHAR(12),
@Password VARCHAR(16)
)

AS
BEGIN

DECLARE @CodeReturn BIT

IF (EXISTS(SELECT COUNT(1) FROM Account WHERE Login = @Login AND Password
= @Password))
BEGIN

UPDATE Account SET IsActivated = 'True' WHERE Login = @Login AND Password
= @Password

SELECT @CodeReturn = 1

END
ELSE
BEGIN

SELECT @CodeReturn = 0

END

END

Via l'Entreprise Manager (je n'es pas son nom en tête en 2005), j'obtiens
toujous 0 même quand le UPDATE est réalisé... je dois mal m'y prendre...

--
Delf




Patrice
Le #11857651
En complément, Select retourne un jeu d'enregistrement. RETURN retourne une
valeur qui est accessible via la collection Parameters, pas un jeu
d'enregistrements d'où le non fonctionnement apparent...

--
Patrice

"Delf"
Gilles LE BARBIER a émis l'idée suivante :

Pourquoi ne pas utiliser la fonction RETURN( ) ?



Car elle lne me retourne rien... dans mon SqlDataReader côté DOTNET, je ne
récupère pas de ligne/colonne...

Avec le SELECT 1, ça fonstionne, il y avait une erreur dans le IF, il
fallait mettre SELECT 1 et non SELECT COUNT(1) qui retourne toujours un
résultat...

--
Delf




Delf
Le #11857611
Patrice a formulé ce lundi :

En complément, Select retourne un jeu d'enregistrement. RETURN retourne une
valeur qui est accessible via la collection Parameters, pas un jeu
d'enregistrements d'où le non fonctionnement apparent...



Et comment puis-je récupérer le résultat d'un RETURN côté DOTNET ?
Merci.

--
Delf
Delf
Le #11857601
Philippe TROTIN [MS] a pensé très fort :

SELECT @CodeReturn = 1 ou 0 va affecter à la variable @CodeReturn la valeur 0
ou 1.

Si vous faisiez tout simplement :

SELECT 1 AS CodeReturn
ou
SELECT 0 AS CodeReturn



C'est ce que je fais sans renommer la colonne vu que j'utilise
.GetString(0).

--
Delf
Patrice
Le #11857571
Voir :
http://msdn2.microsoft.com/fr-fr/library/yy6y35y8(VS.80).aspx (code sous
"Exemple SqlClient").

La collection des paramètres comporte un paramètre RETURN_VALUE qui est la
valeur retournée par la procédure stockée.
--
Patrice

"Delf"
Patrice a formulé ce lundi :

En complément, Select retourne un jeu d'enregistrement. RETURN retourne
une valeur qui est accessible via la collection Parameters, pas un jeu
d'enregistrements d'où le non fonctionnement apparent...



Et comment puis-je récupérer le résultat d'un RETURN côté DOTNET ?
Merci.

--
Delf




Publicité
Poster une réponse
Anonyme