Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不传递可选参数的C#存储过程_C#_Sql Server_Stored Procedures_Optional Parameters - Fatal编程技术网

不传递可选参数的C#存储过程

不传递可选参数的C#存储过程,c#,sql-server,stored-procedures,optional-parameters,C#,Sql Server,Stored Procedures,Optional Parameters,我在SQL Server中的存储过程如下所示: ALTER PROC [dbo].[Rd_CreateModifyAssignmentType] ( @AssignmentTypeId nvarchar(50), @AssignmentTypeName nvarchar(50), @mode int, @Langtype nvarchar(10)='' ) 从C#这样称呼它: SqlHelper.ExecuteNonQuery("Rd_CreateModify

我在SQL Server中的存储过程如下所示:

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#中调用该过程,而不传递可选参数


请帮我解决这个问题。

在您的代码中,您可以编写为:

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

现在将要发生的是,您的过程将检查可选参数的值。如果找不到任何值,则该方法不会将@Langtype参数添加到命令中,它将使用您在数据库中指定的默认值作为
'

请在存储过程中通过null all参数设置默认值:

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

然后询问
SqlHelper
的作者,不管是什么,允许他们在调用存储过程的代码中使用它。