pl / sql中的多行输出

时间:2015-12-29 09:47:20

标签: oracle plsql dbms-output

我有一个具有循环结构的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运行时,我只获得第一行的详细信息,但不获取其余信息。我究竟做错了什么?如何获得循环的所有输出。

2 个答案:

答案 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;
/