Хранимая процедура Выходной параметр в c # возвращает значение Empty, где as Работает нормально при выполнении в SQL - PullRequest
0 голосов
/ 16 ноября 2018

Я создал хранимую процедуру, в которой у меня объявлен выходной параметр.Это дает правильный результат, когда я выполняю его в SQL.но я интегрировал его в код C #, я получаю пустой объект. Я не уверен, в чем проблема.Я посетил так много ссылок, но не нашел подходящего ответа.

Вот мой код функции C #: -

public bool PreviewAsReviewerButtonEnableDisable(string advId, string userType)
        {
            bool result = false;

            using (RMS_MVCEntities entities = new RMS_MVCEntities())
            {
                var command = entities.Database.Connection.CreateCommand();
                command.CommandText = "[AdvTax].[usp_PreviewAsReviewerButton_Enable_Disable]";
                command.CommandType = CommandType.StoredProcedure;

                command.Parameters.Add(new SqlParameter("@AdvID", advId));
                command.Parameters.Add(new SqlParameter("@Type", userType));
                command.Parameters.Add(new SqlParameter("@EnableDisable", SqlDbType.Bit));
                command.Parameters["@EnableDisable"].Direction = ParameterDirection.Output;

                entities.Database.Connection.Open();
                var reader = command.ExecuteReader();
                result = Convert.ToBoolean(command.Parameters["@EnableDisable"].Value);
                entities.Database.Connection.Close();
            }
            return result;
}

Вот мойSql хранимая процедура: -

ALTER PROCEDURE [AdvTax].[usp_PreviewAsReviewerButton_Enable_Disable]
@AdvID nvarchar(20),
@Type nvarchar(20),
@EnableDisable bit output
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

If @Type='CTT Maker'

Begin

Declare @Count int=(select Count(*) from [AdvTax].[AdvTax_Computation] where AdvID=@AdvID and IsActive=1)

If @Count>0

Begin
set @EnableDisable=1
End

Else

Begin
set @EnableDisable=0
End

End


If @Type='CTT Checker'

Begin

Declare @Count1 int=(select Count(*) from [AdvTax].[AdvTax_Computation_Checker]
 where AdvID=@AdvID and IsActive=1)

If @Count1>0

Begin
set @EnableDisable=1
End

Else

Begin
set @EnableDisable=0
End

End



END

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете попытаться назначить его напрямую

var result = (bool)command.ExecuteReader();

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...