2015-10-08 43 views
1

我想在PL/SQL中使用遊標。 我想比較光標的元素彼此。 比如我有一個工作表,該表包含job_number,我想比較job_number互相尋找是否有此表中同一job_number如何使用Cursor將它的元素與海誓山盟進行比較?

declare 
    jobisn job.job_number%type; 
    cursor c1 is 
    select t.job_isn 
     from job t; 
begin 
for i in c1 loop -- what should I code here ? 
+0

如果您可以提供一些示例數據以及您想要輸出的內容以及原因,這將有所幫助。我的第一個直覺反應是你不需要循環遊標;您可以在單個選擇語句中完成。 – Boneist

回答

1

你可以用一個SQL語句達致這 -

select job_isn, count(*) 
from job 
group by job_isn 
having count(*) > 1; 

如果你想用光標做吧(儘管其速度較慢,不適合你的需求),只運行光標這裏面的代碼 -

select count(*) 
into v_num_jobs 
from job 
where job_isn = i.job_isn; 

if v_num_jobs > 1 then 
    dbms_output.put_line(i.job_isn||' job has duplicates'); 
endif; 
+2

非常感謝您的幫助 – programmer

2

你可以簡單地使用本機sql來做到這一點。您可以通過這樣做知道該表上顯示的工作號碼的次數:

 select job_number, count(job_number) over(partition by job_number) from job;