2011-07-20 5 views
2

J'essaie de retourner la valeur de colonne 'ItemId' de la table 'item' en utilisant la procédure stockée basée sur la valeur d'entrée de la colonne 'Name' qui est de type varchar, mais chaque fois que je passe valeur à la procédure stockée me renvoie une erreur: Erreur lors de la conversion du type de données varchar en int.Erreur lors de la conversion du type de données varchar en int

create procedure RetrieveId 
(@itemId int output,@Name varchar(30)) 
As 
Begin 
If exists(Select * from item where [Name] = @Name) 
Begin 
Select @itemId = itemid from item 
    where [Name] = @Name 
return @itemId 
End 
Else 
return 1 
End 

Voici comment je l'appeler:

RetrieveId 'asf' 

Répondre

4

Vous devez faire correspondre les paramètres: le retour ne remplit pas les paramètres de sortie: votre affectation à @itemid fait cela.

DECLARE @item int 
EXEC RetrieveId @item OUTPUT, 'asf' 

De plus, votre proc stocké est trop complexe. RETURN n'est pas un bon choix pour renvoyer des données à partir de proc stockés et les EXISTS sont inutiles. Dans ce cas, @itemId sera NULL s'il n'est pas trouvé

create procedure RetrieveId 
    @itemId int output, 
    @Name varchar(30) 
As 
    Select @itemId = itemid 
    from item 
    where [Name] = @Name 
GO 
+0

Merci pour votre aide. – Dusk

Questions connexes