2017-04-26 50 views
0

我正在嘗試使用簡單的循環顯示來自表「employees」的前5條記錄的名字,工資和工作id。但是,在輸出中只顯示第一條記錄。請提出我寫錯的代碼,以及我應該如何糾正錯誤。以下是代碼。 Also, I have attached the screenshot of the result.PL/SQL:循環,獲取記錄

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

我認爲它說,它不具有的rownum = 2 ......沒有發現任何數據.... – user5328504

+0

肯定。但是,表格中有117條記錄。我不知道那裏可能會出現什麼問題。 –

+0

問題是plsql關鍵字rownum。你可以做的事情是首先獲得所有5個項目 – user5328504

回答

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;