PL SQL 中顯式游標的使用

2021-08-04 07:10:54 字數 2422 閱讀 3071

一般在pl/sql中使用顯式游標有如下的過程

我們以輸出employees表中員工的姓名為例,進行以下的操作

declare

v_emp_first_name employees.first_name%type;

v_emp_last_name employees.last_name%type;

--宣告游標

cursor emp_name_cur is

select emp.first_name,

emp.last_name

from employees emp;

begin

--開啟游標

open emp_name_cur;

loop

--提取當前行到變數

fetch emp_name_cur

into v_emp_first_name,

v_emp_last_name;

-- 自定義結束條件不滿足 或者 當前行為空 則 結束迴圈

exit

when emp_name_cur%rowcount>5

or emp_name_cur%notfound;

dbms_output.put_line(v_emp_first_name ||' '|| v_emp_last_name);

endloop;

--關閉游標

close emp_name_cur;

end;

這就是乙個標準的游標使用示例了,對應關係如下圖

一看到上面的那麼多的步驟要去記,感覺很很繁瑣,啦有沒有什麼簡單的寫法呢?

我們可以使用for迴圈來簡化上面的寫法

for 迴圈省去了游標的宣告、開啟、提取、測試、關閉等語句

declare

--宣告游標

cursor emp_name_cur is

select emp.first_name,

emp.last_name

from employees emp;

begin

--使用 for 迴圈

for tem_cur in emp_name_cur loop

-- 自定義結束條件不滿足 或者 當前行為空 則 結束迴圈

if emp_name_cur%rowcount>5

or emp_name_cur%notfound then exit;

endif;

dbms_output.put_line(tem_cur.first_name ||' '|| tem_cur.last_name);

end loop;

end;

對於上面的**,我們還有另外一種寫法,如下

begin

--使用 for 迴圈

for tem_cur in (

select emp.first_name,

emp.last_name

from employees emp)

loop

dbms_output.put_line(tem_cur.first_name ||' '|| tem_cur.last_name);

end loop;

end;

另外,游標是可以帶有引數的,這就就可以方便的按照條件進行一些操作了。

如下查詢員工號為110的員工姓名

declare

--宣告游標 可以傳引數 emp_id

cursor emp_name_cur(v_emp_id employees.employee_id%type) is

select emp.first_name,

emp.last_name

from employees emp

where emp.employee_id=v_emp_id;

begin

--使用 for 迴圈 emp_id=110

for tem_cur in emp_name_cur(110) loop

-- 自定義結束條件不滿足 或者 當前行為空 則 結束迴圈

if emp_name_cur%rowcount>5

or emp_name_cur%notfound then exit;

endif;

dbms_output.put_line(tem_cur.first_name ||' '|| tem_cur.last_name);

end loop;

end;

PLSQL游標的使用

1.使用無參游標cursor,查詢所有員工的姓名和工資 如果需要遍歷多條記錄時,使用游標cursor,無記錄找到使用cemp notfound declare 定義游標 cursor cemp is select ename,sal from emp 定義變數 vename emp.ename ty...

plsql 游標的使用

1 游標實際上就是乙個集合 2 游標的屬性 found 取到值則返回true 沒取到值則返回false notfound 沒取到值則返回true 取到值則返回false isopen 游標是否開啟 rowcount 影響的行數 3 游標數的限制 預設在同乙個會話中,可以開啟300個游標。4 無引數的...

對顯式游標 隱式游標的理解

顯式游標主要是用於對查詢語句的處理,尤其是在查詢結果為多條記錄的情況下。1 建立測試表,插入 測試資料 2 編寫儲存過程 create or replace procedure printstudent sname in out varchar,sage in varchar as resultco...