Member 11589429 Ответов: 1

Как вернуть параметр выхода из СП и ловить/обрабатывать на 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

1 Ответов

Рейтинг:
2

Ashwin. Shetty

В вашем .net-приложении вам нужно будет установить направление параметра, что-то вроде cmd.Parameters["ParamName"].Направление = ParameterDirection.Выход;

Вы можете посмотреть на Как вернуть выходной параметр из хранимой процедуры в ASP.Net с использованием C# и VB.Net[^]