8
votes

La procédure stockée ne renvoie rien

Cette procédure stockée ne fonctionne pas. J'ai vérifié le SQL et il renvoie la valeur correcte lorsqu'elle est analysée directement sur la DB. C'est vraiment étrange! Il retourne juste 0 rangées.

Qu'est-ce qui pourrait être faux? P>

ALTER PROCEDURE dbo.GetSaltOfUser

 (
 @eMail nvarchar

 )

AS
DECLARE @result nvarchar
 /* SET NOCOUNT ON */
BEGIN
   SELECT @result = salt
   FROM UserSet
   WHERE eMail = @eMail
   RETURN @result
END


3 commentaires

D'où je l'écris dans Visual Studio. J'ai le droit de cliquer avec le bouton droit de la souris et choisissez Exécuter.


Comment déterminez-vous la valeur de retour?


WTH, qu'est-ce que la balise OOPS? Je devrais avoir cela sur toutes mes questions .. "Oups, je ne savais pas assez" :)


3 Réponses :


7
votes
DECLARE @salt nvarchar(50)
EXECUTE dbo.GetSaltOfUser N'abc@example.com', @salt OUTPUT
SELECT @salt

3 commentaires

Oh c'est simple? Merci, j'ai de la chance que je me suis heurté au début du projet.


Et pour répondre à votre question; Il est correct que je cherchais le paramètre de sortie. Est-il préférable de toujours avoir un paramètre de sortie, même si la commande est assez simple?


@Phil - Oui. Je crois qu'un paramètre de sortie est plus léger que celui d'une sélection scalaire.



1
votes

Vous n'avez pas besoin d'attribuer le sel code> à une variable.

CREATE PROCEDURE dbo.GetSaltOfUser
(
    @eMail nvarchar    
)
AS
BEGIN
    SELECT salt
    FROM UserSet
    WHERE eMail = @eMail
END


2 commentaires

Comme il semble que je ne peux pas retourner un var car il doit être un entier? Cela s'applique-t-il uniquement à la commande "retour"?


Il retournera sel dans n'importe quel type de données. Vous pourriez lancer cela comme tout ce que vous voulez, avec portée évidemment. Cast (sel comme nvarchar (50)) en sel



1
votes

deux cents de ma fin

  • Bien que vous utilisez Set Nocount sur
  • Utilisez toujours le code d'état de retour sur retour, exemple 0- Succès, 1 - Échec
  • Utilisez Sélectionner pour renvoyer les lignes
  • Utilisez Essayez de saisir les conditions d'erreur de la poignée

0 commentaires