2010-04-30 2 views
2

При использовании хранимых процедур, я могу добавить значения по умолчанию для параметров, например:Как я могу добавить значения по умолчанию для параметризованных запросов

@name VARCHAR (50) = NULL

ли можно сделать что-то подобное при использовании параметризованного запроса в .NET.

Благодаря

ответ

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 
} 
0

О единственным способом я могу думать (Внимание, уродливый код впереди!):

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

Другой вариант должен иметь ряд IF/ELSE блоков в вашем C#/код VB.net, такие как:

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); 
    } 
} 
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; 
0

Просто не устанавливайте его?

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

Это то, что мы делаем для необязательных параметров для хранимых проков

Это может не работать для некоторых провайдеров, которые используют только порядковые параметры, а не именованные параметры. SQL Server/.net использует именованные параметры

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; 
} 
Смежные вопросы