如何将可空字符串从C#传递给SP

时间:2009-09-30 10:39:54

标签: c# sql stored-procedures

我有一个字符串属性,可能是null也可能不是null。

我正在使用此调用将其传递给SP:

db.AddInParameter(InsertMessageDetailCommand, "MyParam", System.Data.DbType.String, this.myParam);

该字段在SP中定义如下:

@MyParam nvarchar(50)

如何更改SP以允许空值,如果param值为null,则在SP后面的数据库表中插入null?

由于

1 个答案:

答案 0 :(得分:2)

将存储过程参数声明为可选:

@MyParam nvarchar(50) = NULL

例如:

CREATE PROCEDURE TestProc
(
    @Param1 varchar(50) = NULL
)
AS
SELECT
    * 
FROM
    TestTable
WHERE
    ((@Param1 IS NULL) OR (col1 = @Param1))

但请注意,此模式与许多参数一起使用时,可能会因“参数嗅探”导致错误地缓存查询计划。