我试图从表格中显示前5条记录的名字,工资和工作ID"员工"使用一个简单的循环。但是,在输出中仅显示第1条记录。请告诉我在我编写的代码中出错的地方以及我应该采取哪些措施来纠正它。以下是代码。 Also, I have attached the screenshot of the result.
declare
v_i number(2) ;
v_fname employees.first_name%type;
v_sal employees.salary%type;
v_job employees.job_id%type;
begin
v_i:=1;
loop
select first_name, salary, job_id into v_fname, v_sal, v_job from
employees where rownum=v_i;
dbms_output.put_line('Record ' || v_i || ': ');
dbms_output.put_line('First Name: ' || v_fname);
dbms_output.put_line( 'Salary: ' || v_sal);
dbms_output.put_line( 'Job Title: ' || v_job);
dbms_output.put_line( chr(10));
v_i := v_i +1;
exit when v_i >= 5;
end loop;
end;
答案 0 :(得分:1)
您不能按照自己的方式使用ROWNUM
。它仅适用于v_i=1
的第一个选择;试一试:ROWNUM=2
的选择不会返回任何内容!
以下是使用隐式游标的方法:
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;