Здесь я передаю имя сотрудника в качестве параметра, но объявляется внутри метода вместо вызова метода, а затем добавляется в качестве параметра к хранимой процедуре. Но результат, который я здесь получаю, включает в себя все данные о сотрудниках. Здесь я пытаюсь получить данные для Джона из метода GetEmployee, вместо этого получаю данные для всех имен сотрудников в представлении. Любые идеи, где я делаю неправильно?
public IList<EmployeeModel> GetEmployee()
{
string employeeName= "John";
List<EmployeeModel> empdata;
using (DbCommand cmd = this.UoW.CreateCommand())
{
cmd.CommandText = "getemployee";
cmd.CommandType = CommandType.StoredProcedure;
cmd.AddParameter("employeeName", DbType.String, ParameterDirection.Input, employeeName);
cmd.AddParameter("outputcur", Oracle.ManagedDataAccess.Client.OracleDbType.RefCursor, ParameterDirection.Output, string.Empty);
empdata= cmd.ExecuteQuery<EmployeeModel>();
}
return empdata;
}
}
Вот код в процедуре
PROCEDURE getemployee(employeeName VARCHAR, outputcur OUT SYS_REFCURSOR ) IS
BEGIN
OPEN outputcur FOR SELECT
*
FROM
V_EMPLOYEE
WHERE
empname= employeeName; //John is the employeename
END;
И здесь, в этом методе, который отличается от выше, я передаю параметр при вызове его, и это работает
public IList<AllEmployeeModel> GetAllEmployees(string employeeId)
{
List<AllEmployeeModel> allempdata= new List<AllEmployeeModel>();
using (DbCommand cmd = this.UoW.CreateCommand())
{
cmd.CommandText = "getallemployees";
cmd.CommandType = CommandType.StoredProcedure;
cmd.AddParameter("employeeId", DbType.String, ParameterDirection.Input,employeeId);
cmd.AddParameter("output",Oracle.ManagedDataAccess.Client.OracleDbType.RefCursor,ParameterDirection.Output, string.Empty);
allempdata= cmd.ExecuteQuery<AllEmployeeModel>();
}
return allempdata;
}