Получение переменных, использующих цикл и псевдонимы в курсоре - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь использовать цикл for для печати набора данных, и мне было любопытно, можно ли использовать псевдоним для получения информации или как я могу сделать это для цикла for

DECLARE
job_ VARCHAR2(35);
employee_name VARCHAR2(35);
manager_name VARCHAR2(35);
salary_difference NUMBER(20,2);
CURSOR cur_salary_difference IS
    SELECT job_title, employees.first_name || ' ' || employees.last_name "Employee", 
    m.first_name || ' ' || m.last_name "Manager", (employees.salary-m.salary) "Salary Difference" 
    FROM employees
    LEFT OUTER JOIN employees m ON
       employees.manager_id = m.employee_id
       JOIN jobs j ON employees.job_id = j.job_id
    ORDER BY "Employee";
BEGIN
    DBMS_OUTPUT.PUT_LINE('Listings of employees with salary difference compared to manager');
    FOR people IN cur_salary_difference LOOP
        DBMS_OUTPUT.PUT_LINE (chr(10) || 'Job Title:' || people.job_title);
        DBMS_OUTPUT.PUT_LINE ('Employee:' || people.employee);
        DBMS_OUTPUT.PUT_LINE ('Manager:' || people.manager);
        DBMS_OUTPUT.PUT_LINE ('Salary Difference:' || salary_difference);

    END LOOP;
END;

Ответы [ 2 ]

2 голосов
/ 27 июня 2019
  1. Тебе стоит попробовать.
  2. Да, псевдонимы будут работать. Поскольку вы поместили псевдонимы в двойные кавычки, Oracle будет обрабатывать их как чувствительные к регистру, и вам понадобятся двойные кавычки позже, когда вы будете их использовать. (Вот почему вы не должны заключать в двойные кавычки идентификаторы в 99% случаев.)
1 голос
/ 27 июня 2019

Должно сработать, просто исправь опечатку в зарплате

  (employees.salary-m.salary) "Salary_Difference"
...