2016-07-01 5 views
1

Моей хранимой процедуры в SQL Server выглядит следующим образом:C# хранимая процедура без прохождения необязательных параметров

ALTER PROC [dbo].[Rd_CreateModifyAssignmentType] 
(
    @AssignmentTypeId nvarchar(50), 
    @AssignmentTypeName nvarchar(50), 
    @mode int, 
    @Langtype nvarchar(10)='' 
) 

Призывая его из C# как это:

SqlHelper.ExecuteNonQuery("Rd_CreateModifyAssignmentType", AssignmentTypeId, AssignmentTypeName, mode); 

он бросает исключение:

Счетчик параметров не совпадает. Счетчик параметров.

Я хочу вызвать процедуру в C# без передачи необязательных параметров.

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

+0

Затем попросите автора 'SqlHelper', что бы это ни, чтобы его в любой код, они используют для вызова хранимой процедуры , –

ответ

2

В своем коде вы можете написать как:

if (Langtype.HasValue) 
    cmd.Parameters.AddWithValue("@Langtype", Langtype.Value); 

Так что теперь будет происходить в том, что ваша процедура будет проверить значение опционального параметра. Если он не найдет никакого значения, тогда метод не добавит параметр @Langtype в команду, и он будет использовать значение по умолчанию как '', которое вы указали в своей базе данных.

0

Пожалуйста, установите значение по умолчанию, нулевой всех параметров в хранимой процедуре:

ALTER PROC [dbo].[Rd_CreateModifyAssignmentType] 
(
    @AssignmentTypeId nvarchar(50) = null, 
    @AssignmentTypeName nvarchar(50) = null, 
    @mode int = null, 
    @Langtype nvarchar(10) = null 
) 
Смежные вопросы