我有一个具有循环结构的PL / SQL文件。 该脚本如下。
SET SERVEROUTPUT ON
declare
c_id employee.id%type;
c_name employee.name%type;
c_address employee.address%type;
CURSOR c_employee is
SELECT id, name, address from employee;
begin
open c_employee;
LOOP
FETCH c_employee into c_id, c_name, c_address;
EXIT when c_employee%notfound;
dbms_output.put_line(c_id||' '||c_name||' '||c_address);
END LOOP;
close c_employee;
end;
/
当我从SQLPlus运行时,我只获得第一行的详细信息,但不获取其余信息。我究竟做错了什么?如何获得循环的所有输出。
答案 0 :(得分:-1)
尝试将代码转换为使用for循环而不是open语句,如此 -
for r_employee in c_employee
LOOP
dbms_output.put_line(r_employee.c_id||' '||r_employee.c_name||' '||r_employee.c_address);
END LOOP;
其中r_employee是员工%类型的变量。
您当前编写它的方式不会遍历游标,这就是为什么只显示第一行的原因。
答案 1 :(得分:-1)
即使您的代码看起来正确,它也应该遍历所有代码 排不只是一个。尝试使用下面的代码片段并在SQL plus中运行它 还是单排然后可能还有其他一些问题。
SET SERVEROUTPUT ON
DECLARE
BEGIN
FOR I IN
(SELECT id, name, address FROM employee
)
LOOP
dbms_output.put_line(I.ID||' '||I.name||' '||I.address);
END LOOP;
END;
/