我离开SqlParameter
SqlValue
未设置,表示该参数应设置为默认值。这是MSDN documentation:
使用null或不设置SqlValue以使用参数的默认值。
当我尝试执行与SqlCommand
相关联的SqlParameter
时,我收到一条抱怨
参数化查询' ...'期望参数' @ 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
答案 0 :(得分:0)
我能想到的是,使用COALESCE()
并传递NULLs
。例如:
EXECUTE sp_executesql N'SELECT COALESCE(@p0, 15);', N'@p0 INT', @p0 = NULL;
但这似乎不符合您的A / C.
除此之外,我不知道是否可能。