我正在访问存储过程,并且我试图将一些参数传递给它。我有以下循环添加所有参数:
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;那么我想要所有员工,否则如果是一个号码,我希望员工拥有该号码?
答案 0 :(得分:1)
您的存储过程很可能具有类似于
的条件WHERE EMPLOYEE_ID = @EmployeeId
将其更改为
WHERE @EmployeeId = 'All' OR EMPLOYEE_ID = @EmployeeId
这是一个“全部捕捉”的对象。条件。如果你通过了所有&#39; - 第一部分将是真实的,条件通过。否则,将根据表字段
验证参数的值答案 1 :(得分:1)
而不是使用&#34; All&#34;您只需对EmployeeId使用值-1或0,然后在存储过程中检查0或-1即可返回该场景中的所有用户。