Как вернуть параметр выхода из СП и ловить/обрабатывать на C#?
Я создал sp в sql server 2012. Sp имеет выходной para типа varchar(15).
create procedure [dbo].[Proc_Authenticate] ( @username int, @password varchar(25), @Error varchar(15) output ) AS BEGIN Declare @count int set @count = (select count(*) from loginmaster where userid = @userid and password = @password) if(@count = 0) begin Set @Error = 'Error1' end END
когда я запускаю sp из sql,он работает правильно,но когда я использую/вызываю sp из C#, с помощью executescalar, он работает не так, как ожидалось.Executescalar всегда возвращает null.Если то же самое я делаю с ExecuteNonquery,то он работает правильно.Executenonquery используется для вставки/обновления.Exeutenonquery возвращает номер затронутой строки,то есть значение int. Инт rowaffected = ЦМД.Метод executenonquery() как правило, я проверяю, если rowaffected больше 0,принимаем значение выходного пункт.
if(rowaffected > 0) { string s = sqlparameterError.value.Tostring() }
Вот как я проверяю, rowaffected всегда равен -1.Правильно ли это проверить?
Что я уже пробовал:
create procedure [dbo].[Proc_Authenticate] ( @username int, @password varchar(25), @Error varchar(15) output ) AS BEGIN Declare @count int set @count = (select count(*) from loginmaster where userid = @userid and password = @password) if(@count = 0) begin Set @Error = 'Error1' end END