如果您有更多参数,这可能会非常困难。请在 SO 上查看此问题以进行进一步调查:
如何在 T-SQL 存储过程中使用可选参数?.
C# 示例
在这种情况下,我永远不会使用存储过程。相反,请看一下以下代码:
var sqlSelect = "Select field1, field2, field3 FROM yourTable"
var cmd = new SqlCommand(yourConn)
var sqlWhere = new StringBuilder();
If (sCode > 0)
{
cmd.Parameters.Add("@SCode", SqlDbType.int).Value = sCode;
sqlWhere.Append("@SCode AND");
}
If (vCode > 0)
{
cmd.Parameters.Add("@VCode ", SqlDbType.int).Value = vCode;
sqlWhere.Append("@VCode AND");
}
If(eCode > 0)
{
cmd.Parameters.Add("@ECode", SqlDbType.int).Value = eCode ;
sqlWhere.Append("@ECode AND");
}
if (sqlWhere.length > 0)
{
sqlWhere.Insert("WHERE ",0);
}
cmd.CommandText = sqlSelect + sqlWhere.ToString();
using(var sr = SqlDataReader = cmd.ExecuteReader())
{
//read your fields
}