Probablement un facile à répondre à la question. J'ai cette procédure:
CREATE PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE UserName=@UserName)
SELECT 1
ELSE SELECT 0
Quand j'ai ADO.NET le code qui appelle cette procédure et fait ceci:
return Convert.ToBoolean(sproc.ExecuteScalar());
True ou false est retourné.
Lorsque je change la procédure stockée renvoie 1 ou 0, au lieu de SÉLECTIONNER:
ALTER PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE UserName=@UserName)
RETURN 1
ELSE RETURN 0
la procédure stockée.ExecuteScalar() renvoie la valeur null. Si j'essaie de la procédure stockée.ExecuteNonQuery() au lieu de cela, -1 est retourné.
Comment puis-je obtenir le résultat d'une procédure stockée avec un RETOUR en ADO.NET?
J'ai besoin de AccountExists de RETOUR, au lieu de SÉLECTIONNER pour que je puisse avoir un autre appel de procédure stockée c':
--another procedure to insert or update account
DECLARE @exists bit
EXEC @exists = [dbo].[AccountExists] @UserName
IF @exists=1
--update account
ELSE
--insert acocunt