在游标中使用 for 循环和别名检索变量
Posted
技术标签:
【中文标题】在游标中使用 for 循环和别名检索变量【英文标题】:Retrieving variables using for loop and aliases in a cursor 【发布时间】:2019-06-27 03:00:43 【问题描述】:我正在尝试使用 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;
【问题讨论】:
【参考方案1】:-
你应该试试看。
是的,别名会起作用。由于您已将别名放在双引号中,Oracle 会将它们视为区分大小写,并且您稍后在使用它们时需要双引号。 (这就是为什么你不应该在 99% 的情况下使用双引号标识符。)
【讨论】:
我确实尝试过,但没有解决问题的双引号。谢谢你的建议。【参考方案2】:应该可以了,只是修正一下薪水的错别字
(employees.salary-m.salary) "Salary_Difference"
【讨论】:
以上是关于在游标中使用 for 循环和别名检索变量的主要内容,如果未能解决你的问题,请参考以下文章