Проблемы с процедурой SQL - PullRequest
       69

Проблемы с процедурой SQL

0 голосов
/ 09 октября 2019

В настоящее время у меня есть две таблицы для работы (перечислены ниже). Ниже приведен мой код для моей текущей процедуры, который принимает значение employeeID и выводит их информацию. Мне нужно изменить его, чтобы, кроме того, перечислить, кто является председателем департамента, и если сотрудник уже является руководителем департамента, он перечислит их как «заведующего отделом».

Я попытался создать отдельное представлениедля того, чтобы сказать, кто является председателем департамента, и вызвать его в цикле, но безуспешно. Довольно застрял здесь.

1 Ответ

0 голосов
/ 09 октября 2019
create or replace procedure emp_records (
    p_emp_id employees.employeeid%type
) is

    l_department_name        departments.departmentname%type;
    l_department_id          departments.departmentid%type;
    l_employee_first_name    employees.firstname%type;
    l_employee_last_name     employees.lastname%type;
    l_employee_employee_id   employees.employeeid%type;
    l_chair_id               departments.departmentchair%type;
    l_chair_name             varchar2(100);
begin
    -- For employee details
    select
        departmentname,
        firstname,
        lastname,
        employeeid,
        departmentid
    into
        l_department_name,
        l_employee_first_name,
        l_employee_last_name,
        l_employee_employee_id,
        l_department_id
    from departments d
    join employees e 
      on e.departmentid = d.departmentidusing
   where employeeid = p_emp_id;

   --For CHair details
  select departmentchair
    into l_chair_id
    from department
   where departmentid = l_department_id;

    if l_chair_id = l_employee_employee_id 
        then
            select 'Is the department chair' into l_chair_name from dual;
    else
        select 'Department Chair: ' || firstname || ' ' || lastname
          into l_chair_name
          from employees
         where employeeid = l_chair_id;
    end if;

    -- For output
    dbms_output.put_line('Information for Employee #' || p_emp_id);
    dbms_output.put_line('Full Name: ' || l_employee_first_name || ' ' || l_employee_last_name);
    dbms_output.put_line('Department: ' || l_department_name);
    dbms_output.put_line(l_chair_name);
exception
    when no_data_found then
        dbms_output.put_line('No records found for this Employee.');
end;
/

Надеюсь, это поможет.

...