sql参数的变量参数

时间:2015-02-18 18:09:09

标签: c# sql-server asp.net-mvc

我正在访问存储过程,并且我试图将一些参数传递给它。我有以下循环添加所有参数:

List<string> paramNames = new List<string> { 
        "@EmployeeId", 
        "@Location", 
        "@StartYear", 
        "@EndYear", 
        "@Department", 
        "@Title", 
        "@FileName"  
};

List<string> paramValues = new List<string> { 
        EmployeeId, 
        Location, 
        StartYear, 
        EndYear, 
        Department, 
        Title, 
        FileName 
};

// Add the input parameter and set its properties.
SqlParameter parameter;
for (int i = 0; i < paramNames.Count(); i++)
{
   parameter = new SqlParameter();
   parameter.ParameterName = paramNames[i];
   parameter.Value = paramValues[i];
   command.Parameters.Add(parameter);
}

第一个参数是&#34; EmployeeId&#34;这个值来自方法参数。此参数可以是字符串值&#34; All&#34;或者它可以是具有员工ID的int值。

- 如何将其值传递给存储过程,以便接受字符串或int。

- 我如何告诉它,如果它&#34;全部&#34;那么我想要所有员工,否则如果是一个号码,我希望员工拥有该号码?

2 个答案:

答案 0 :(得分:1)

您的存储过程很可能具有类似于

的条件
WHERE EMPLOYEE_ID = @EmployeeId

将其更改为

WHERE @EmployeeId = 'All' OR EMPLOYEE_ID = @EmployeeId

这是一个“全部捕捉”的对象。条件。如果你通过了所有&#39; - 第一部分将是真实的,条件通过。否则,将根据表字段

验证参数的值

答案 1 :(得分:1)

而不是使用&#34; All&#34;您只需对EmployeeId使用值-1或0,然后在存储过程中检查0或-1即可返回该场景中的所有用户。