Вызов хранимой процедуры с использованием c# путем передачи параметра, объявленного внутри метода репозитория. - PullRequest
0 голосов
/ 10 апреля 2020

Здесь я передаю имя сотрудника в качестве параметра, но объявляется внутри метода вместо вызова метода, а затем добавляется в качестве параметра к хранимой процедуре. Но результат, который я здесь получаю, включает в себя все данные о сотрудниках. Здесь я пытаюсь получить данные для Джона из метода 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;

    }
...