如何在 ADO.NET 中传递表值函数调用的默认关键字
所以这就是交易。在我们的数据库中,出于安全性和模块化的目的,我们将大部分读取(即选择语句)包装在表值函数中。所以我有一个 TVF 定义一个或多个可选参数。
我相信拥有默认参数的 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 吗?
So here's the deal. In our database, we wrap most of our reads (i.e. select statements) in table valued functions for purposes of security and modularity. So I've got a TVF which defines one or more optional parameters.
I believe having a TVF with defaulted parameters mandates the use of the keyword default
when calling the TVF like so:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
That's fine, everything works in the query analyzer, but when it comes time to actually make this request from ADO.NET, I'm not sure how to create a sql parameter that actually puts the word default
into the rendered sql.
I have something roughly like this now:
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);
So, anybody got any ideas how to pass default
to the TVF?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
默认情况下,您不必添加上述代码(可选参数)。 SQL Server 将使用 UDF 中定义的默认值。但是,如果您想传递不同的值,那么您可以传递:
You don't have to add above code (The optional parameter) for default. SQL Server will use the default as defined in your UDF. However if you would like to pass different value then you can pass:
我会这样做:
I would have done so:
您可以传递 Null 作为参数值。
本文显示了示例。
You can pass Null as the parameter value.
This article shows examples.