Plsql PL/SQL:循环,获取记录

Plsql PL/SQL:循环,获取记录,plsql,Plsql,我试图使用一个简单的循环来显示表employees中前5条记录的名字、薪水和职务id。但是,在输出中仅显示第一条记录。请建议我在我写的代码中哪里出了问题,以及我应该做些什么来纠正它。下面是代码 你不能像现在这样使用ROWNUM。它仅适用于v_i=1的第一次选择;试试看:ROWNUM=2的select将不返回任何结果 以下是如何使用隐式游标执行此操作: declare v_i number(2) ; begin v_i:=1; for x in ( sele

我试图使用一个简单的循环来显示表employees中前5条记录的名字、薪水和职务id。但是,在输出中仅显示第一条记录。请建议我在我写的代码中哪里出了问题,以及我应该做些什么来纠正它。下面是代码

你不能像现在这样使用ROWNUM。它仅适用于v_i=1的第一次选择;试试看:ROWNUM=2的select将不返回任何结果

以下是如何使用隐式游标执行此操作:

declare
  v_i number(2) ;

begin 
      v_i:=1;
    for x in (
      select first_name, salary, job_id into v_fname, v_sal, v_job from 
      employees where rownum <=5 ) loop
          dbms_output.put_line('Record ' || v_i || ': ');
          dbms_output.put_line('First Name: ' || x.first_name);
          dbms_output.put_line( 'Salary: ' || x.salary);
          dbms_output.put_line( 'Job Title: ' || x.job_id);
          dbms_output.put_line( chr(10));
          v_i := v_i +1;
      end loop;
end;     

我想它说它没有rownum=2。。。找不到数据…是。但是,表中有117条记录。我想知道那里可能出了什么问题。问题是plsql关键字rownum。你可以做的一件事是先获得所有5项,我的意思是不要在这里使用rownum。试着使用前5名选择或类似的东西,然后使用类似于获取的游标。游标工作正常。谢谢但是,我们不能使用简单的loop/while loop/for loop语句来实现这一点吗?
declare
  v_i number(2) ;

begin 
      v_i:=1;
    for x in (
      select first_name, salary, job_id into v_fname, v_sal, v_job from 
      employees where rownum <=5 ) loop
          dbms_output.put_line('Record ' || v_i || ': ');
          dbms_output.put_line('First Name: ' || x.first_name);
          dbms_output.put_line( 'Salary: ' || x.salary);
          dbms_output.put_line( 'Job Title: ' || x.job_id);
          dbms_output.put_line( chr(10));
          v_i := v_i +1;
      end loop;
end;