Наверное, простой в ответе вопрос. У меня есть эта процедура:
CREATE PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE UserName=@UserName)
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 UserName=@UserName)
RETURN 1
ELSE RETURN 0
sproc.ExecuteScalar () возвращает ноль. Если я вместо этого попробую sproc.ExecuteNonQuery (), возвращается -1.
Как получить результат хранимой процедуры с ВОЗВРАТОМ в ADO.NET?
Мне нужно, чтобы AccountExists возвращался вместо SELECT, чтобы я мог вызвать другую хранимую процедуру:
--another procedure to insert or update account
DECLARE @exists bit
EXEC @exists = [dbo].[AccountExists] @UserName
IF @exists=1
--update account
ELSE
--insert acocunt