不传递可选参数的C#存储过程
我在SQL Server中的存储过程如下所示:不传递可选参数的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
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
的作者,不管是什么,允许他们在调用存储过程的代码中使用它。