Вероятно, это простой ответ. У меня есть эта процедура:
CREATE PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE [email protected])
SELECT 1
ELSE SELECT 0
Когда у меня есть код ADO.NET, который вызывает эту процедуру, и делает следующее:
return Convert.ToBoolean(sproc.ExecuteScalar());
Возвращается либо true, либо false.
Когда я меняю хранимую процедуру на RETURN 1 или 0 вместо SELECT:
ALTER PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE [email protected])
RETURN 1
ELSE RETURN 0
sproc.ExecuteScalar() возвращает значение null. Если я попробую sproc.ExecuteNonQuery(), возвращается -1.
Как получить результат хранимой процедуры с помощью RETURN в ADO.NET?
Мне нужны AccountExists для RETURN вместо SELECT, поэтому я могу вызвать другую хранимую процедуру:
--another procedure to insert or update account
DECLARE @exists bit
EXEC @exists = [dbo].[AccountExists] @UserName
IF @exists=1
--update account
ELSE
--insert acocunt