这里有个问题。在我们的数据库中,出于安全性和可维护性的考虑,我们将大部分读操作(即 select 语句)都封装在表值函数中。所以我有一个定义了一个或多个可选参数的 TVF。
我认为,当调用具有默认参数的 TVF 时,需要使用关键字 default
,例如:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
没问题,查询分析器里一切正常。但是当我们从ADO.NET实际发起请求时,我不确定如何创建一个SQL参数,以便将单词default
实际放入渲染的SQL中。
目前我的大致代码如下:
String qry = "select * from fn_SampleTVF(@requiredParam, @optionalParam)";
DbCommand command = this.CreateStoreCommand(qry, CommandType.Text);
SqlParameter someRequiredParam = new SqlParameter("@requiredParam", SqlDbType.Int);
someRequiredParam.Value = 123;
command.Parameters.Add(someRequiredParam);
SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);
那么,有人有什么想法如何将default
传递给TVF吗?