有時候希望能夠對瞞住特定條件的記錄逐一進行更新處理,可以使用 for update字句的游標
declare
cursor c_cur is
select usernaem,jop from aspnet_user where sal<3000 for update of sal;
begin
open c_cur
wherne c_cur%found loop
update asp_users set sal=3000 where current or c_cur;
end loop;
close c_cur;
commit;
迴圈loop
fetch c1 into my_record
exit when c1%notfound
end loop;
批量取得游標中的資料(可以用bulk collect字句批量繫結資料)
這樣就能一次性從結果中取得所有的記錄
declare type numtab is table of aspnet_user.userno%type;
type nametabb is table of aspnet_user.user%type;
nums numtab;
names nametab;
cusor is select userno,usernames from aspnet_user where jop='倉庫員';
begin
open c1;
fetch c1;
bulk collect into nums,names;
...close c1;
end;
例子declaae v_userno varchar2(20);
v_usernmae nvarchar2(50);
cursor c_user is
select userno,username from apsnet_users;
begin
open c_users;
loop
fet c_users into v_userno,v_username
wxit thwn c_uses%notfound;
dbms_output.put_line(v_userno||'對應'||v_username);
end loop;
close c_users;
end;
游標屬性if c1%isopen then
..else ;
open c1;
end if;
%not found 屬性
fetcth c1 into my_username,my_salary;
exit when c1%notfound;
..end loop;
%rowcount 屬性
loop
fetch c1
into my_username ,my_salary
if c1%rowcount>10 then
..end if;
..end loop;
每乙個顯示的游標和游標變數都有4個屬性 %found ,%found,%isopen ,%notfound 和rowcount;
%found 屬性
loop
fetch c1
into my_username ,my_salary;
if c1%found then
..else
exit;
end ifl
end loop;
%isopen屬性
為游標for迴圈傳遞引數
ref cursor 型別可以是強型別也可以是若型別
delcare type empcurtype is ref cursor return employees%rowtype;
type genericcurtyp is ref cursor;
游標的基本應用
一 使用游標的理由。我本是乙個用mssql多的程式設計師,所以習慣上是用select 語句的多,但經oracle資深應用人員介紹,游標在第一次執行時比select慢,但以後用同乙個游標卻會快很多。所以現在的erp裡很多東西都用游標來寫。二 游標格式 普通格式 declare cursor rec i...
PL SQL Cursor游標的基本使用
cursor 游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。cursor型別包含三種 靜態游標 分為顯式 explicit 游標和隱式 implicit 游標 ref游標 是一種引用型別,類似於指標。顯式游標 1 顯式cursor的...
SQL Server游標的基本用法
sql server游標的基本用法 2011年03月01日 sql server中使用游標的基本步驟 1 建立游標,語法 declare cursorname cursor for sql 2 開啟游標,語法 open cursorname 3 操作游標 移動游標 語法 fetch next fro...