2010-04-30 45 views

回答

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