将SqlParameter配置为默认值

时间:2015-07-20 17:26:59

标签: sql .net sql-server ado.net sqlparameter

我离开SqlParameter SqlValue未设置,表示该参数应设置为默认值。这是MSDN documentation

  

使用null或不设置SqlValue以使用参数的默认值。

当我尝试执行与SqlCommand相关联的SqlParameter时,我收到一条抱怨

的SQL错误
  

参数化查询' ...'期望参数' @ p0',这是未提供的。

问题是生成的查询调用sp_executesql而没有指出参数可以有默认值。

生成的SQL(有问题):

exec sp_executesql N'INSERT [dbo].[WithDefault] ([Field]) VALUES (@p0);',N'@p0 int',@p0=default

更正SQL:

exec sp_executesql N'INSERT [dbo].[WithDefault] ([Field]) VALUES (@p0);',N'@p0 int=default',@p0=default

(在=default之后注意@p0 int

问题

如何配置SqlParameter以使其包含=default以及参数的数据类型?

我想象的是:

param.DbType = System.Data.DbType.Int32;
param.IsDefaultable = true; // but this property doesn't exist

1 个答案:

答案 0 :(得分:0)

我能想到的是,使用COALESCE()并传递NULLs。例如:

EXECUTE sp_executesql N'SELECT COALESCE(@p0, 15);', N'@p0 INT', @p0 = NULL;

但这似乎不符合您的A / C.

除此之外,我不知道是否可能。