ado.net - 如何在 ADO.NET 中为表值函数调用传递默认关键字

标签 ado.net user-defined-functions sqlparameter

所以这是交易。在我们的数据库中,出于安全性和模块化的目的,我们将大部分读取(即选择语句)包装在表值函数中。所以我有一个定义一个或多个可选参数的 TVF。

我相信具有默认参数的 TVF 要求使用关键字 default像这样调用 TVF 时:

select * from fn_SampleTVF(123, DEFAULT, DEFAULT)

没关系,一切都在查询分析器中工作,但是当实际从 ADO.NET 发出这个请求时,我不确定如何创建一个实际放置单词 default 的 sql 参数进入呈现的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?

最佳答案

SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);

默认情况下,您不必添加上述代码(可选参数)。 SQL Server 将使用 UDF 中定义的默认值。但是,如果您想传递不同的值,那么您可以传递:

SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int); 
optionalParam.Value = newValue; 
command.Parameters.Add(optionalParam); 

关于ado.net - 如何在 ADO.NET 中为表值函数调用传递默认关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835935/

相关文章:

c# - 是否可以使用 SqlParameters 获取 SqlCommand 的解析文本?

c# - 在 gridview 中排序不起作用

sql-server-2005 - 将连接字符串中的排序规则属性设置为 SQL Server 2005

oracle - 为类型分配默认值

php - 如何从 PHP 代码中调用 MySQL 存储过程?

excel - "Microsoft Office Excel is waiting for another application to complete an OLE action."是什么意思?

c# - SqlParameter 不允许表名 - 没有 sql 注入(inject)攻击的其他选项?

c# - SqlConnection.CreateCommand 和 new SqlCommand 之间有什么区别吗?

c# - ADO 异常操作数类型冲突

c# - 如何设置sql参数