如何将默认值添加到参数化查询中

时间:2010-04-30 13:49:56

标签: .net sql-server

使用存储过程时,我可以为参数添加默认值,例如:

@name varchar(50)= NULL

在.NET中使用参数化查询时,可以做类似的事情。

由于

5 个答案:

答案 0 :(得分:0)

不确定您使用的是哪种语言,但我经常通过重载来处理此问题。我这样做是因为它将默认值集中在一个地方。:

//call this method if you have no value for name
void MyMethod()
{
    string name = null;
    MyMethod(name);
}

//call this when you want to assign a value to name
void MyMethod(string name)
{
    //your normal code here where name is assigned as parameter value
}

答案 1 :(得分:0)

关于我能想到的唯一方法是(警告,未来的丑陋代码!):

SELECT column1, column2
FROM tabl1
WHERE column1 = ISNULL(@column1Parameter, column1)

另一种选择是在C#/ VB.net代码中包含一系列IF / ELSE块,例如:

public void MethodThatCallsParameterisedSql(string column1Value)
{
    var command = new SqlCommand(PARAMETERISED_SQL_CONSTANT);
    if (string.IsNullOrEmpty(column1Value))
    {
        command.Parameters.Add("@column1Value", DEFAULT_VALUE_FOR_COLUMN1);
    }
    else
    {
        command.Parameters.Add("@column1Value", column1Value);
    }
}

答案 2 :(得分:0)

myCommand.SelectCommand.Parameters.Add("@name", SqlDbType.VarChar, 50);
if (Name == NULL)
  myCommand.SelectCommand.Parameters["@name"].Value = NAME_DEFAULT_VALUE;
else
  myCommand.SelectCommand.Parameters["@name"].Value = Name;

答案 3 :(得分:0)

根本不设置它?

if (!string.IsNullOrEmpty(column1Value))
    {
        command.Parameters.Add("@column1", column1Value);
    }

这就是我们对存储过程的可选参数所做的工作

对于仅使用序数参数而不是命名参数的某些提供程序,这可能不起作用。 SQL Server / .net使用命名参数

答案 4 :(得分:0)

您可以使用 DBNull.Value 来提供默认值。例如:

if(string.IsNullOrEmpty(name)){
     //set default value
     command.Parameters.Add("@name", DbType.String, 50).Value = DBNull.Value;
}
else
{
    //set your parameter value
    command.Parameters.Add("@name", DbType.String, 50).Value = name;
}