關於游標的初級使用方法

2021-05-22 23:18:57 字數 2710 閱讀 1718

/*---------游標-------*/

/*游標是乙個機制,通過這個機制可以給乙個sql語句命名,並操作該

sql返回的資料或者使用該sql返回的資料操作其他的資料

*//*

顯式游標:顯式宣告游標,且由**管理游標生命週期

隱式游標:非顯式宣告游標,由系統管理游標生命週期

及有無open,close。

*/--loop..end loop;

declare

cursor c_departments(p_department_id number) is

select dp.department_id, dp.department_name

from departments dp

where dp.department_id = p_department_id;

c_dept_rec c_departments%rowtype;

v_dept_id number := 2001;

begin

open c_departments(v_dept_id);

loop

fetch c_departments

into c_dept_rec;

exit when c_departments%notfound;

dbms_output.put_line('部門id:' || c_dept_rec.department_id || ',部門名稱:' ||

c_dept_rec.department_name);

end loop;

close c_departments;

end;

--while..loop..end loop;

declare

cursor c_departments(p_department_id number) is

select dp.department_id, dp.department_name

from departments dp

where dp.department_id = p_department_id;

c_dept_rec c_departments%rowtype;

v_department_id number := 2001;

begin

open c_departments(v_department_id);

fetch c_departments --不用帶引數

into c_dept_rec;

while c_departments%found loop

dbms_output.put_line('部門id:' || c_dept_rec.department_id || ',部門名稱:' ||

c_dept_rec.department_name);

fetch c_departments

into c_dept_rec;

end loop;

close c_departments;

end;

--for..in..loop..end loop;

declare

cursor c_departments(p_dept_id number) is

select dp.department_id, dp.department_name

from departments dp

where dp.department_id = p_dept_id;

--不用宣告  c_dept_rec c_departments%rowtype;

v_dept_id number := 2001;

begin

--不用open,close

for c_dept_rec in c_departments(v_dept_id)/*此處要帶引數*/ loop

dbms_output.put_line('部門id:' || c_dept_rec.department_id || ',部門名稱:' ||

c_dept_rec.department_name);

end loop;

end;

--隱式游標

/*從資料庫中獲取資料到變數時,如果相關sql只返回低於1條記錄,

使用顯式游標過於麻煩,oracle提供select into快速實現改功能。

所有dml語句執行時建立乙個隱式游標,所以select into也是游標,

不過其建立和開啟、關閉全部由oracle自動完成

*/--select into

declare

v_emp_num employees.employee_number%type;

v_emp_name employees.employee_name%type;

begin

select em.employee_number,em.employee_name

into v_emp_num,v_emp_name

from employees em

where em.employee_name='john smith';

dbms_output.put_line('員工號碼:'||v_emp_num||',員工姓名:'||v_emp_name);

exception

when no_data_found then

dbms_output.put_line('無此員工,請檢查');

end;

Oracle PL SQL游標的使用方法

演示隱式游標,系統自動宣告,自動開啟,自動使用並且自動關閉 begin update emp set sal 1000 dbms output.put line 影響的行數 sql rowcount end rollback 游標的使用方法 第一步 宣告游標 第二步 開啟游標 第三步 使用游標進行迴...

ORACLE中游標的使用方法

游標被用的最多的是在儲存過程中執行批量修改或是批量刪除操作,比如刪除一條主表記錄之後,可以執行乙個儲存過程刪除該記錄對應的明細記錄。或者修改某張表的某個資料後反寫另一張表的資料。這在erp軟體開發中是經常用到的,例如出庫單實提之後要反寫合同上的實提重量等等,這也要靠好的資料庫設計來支援。下面是乙個o...

學習筆記 游標的使用方法

游標是sql 的一種資料訪問機制。可以將游標簡單的看成是查詢的結果集的乙個指標,可以根據需要在結果集上面來回滾動,瀏覽需要的資料。靜態游標 靜態游標的結果集,在游標開啟的時候建立在tempdb中,不論你在操作游標的時候,如何運算元據庫,游標中的資料集都不會變。如果想與操作之後的資料一致,則重新關閉開...