游標的基本應用

2021-05-21 12:36:19 字數 1928 閱讀 3775

一、使用游標的理由。

我本是乙個用mssql多的程式設計師,所以習慣上是用select 語句的多,但經oracle資深應用人員介紹,游標在第一次執行時比select慢,但以後用同乙個游標卻會快很多。所以現在的erp裡很多東西都用游標來寫。

二、游標格式:

普通格式:

declare

cursor rec_ is

select 語名;

例:declare

cursor rec_ is

select ikey,customername

from customer;

帶引數格式:

declare

cursor rec_(pram1 varchar2,...)   is

select 語句;

例:declare

cursor rec_(name_ varchar2)   is

select ikey,customername

from customer

where  customername=name_;

三、游標使用

普通格式

取第一行的值。

open rec_;

fetch rec_ into 變數1,變數2(相對select語句的字段)

close rec_;

例:declare

key_         number;

cname_      varchar2(50);

cursor rec_ is

select ikey,customername

from customer;

begin

open rec_;

fetch rec_      into      key_,cname_;

dbms_output.put_line('key:'||key_||'#name:'||cname_);

close rec_;

end;

取迴圈值。

for [item]  in rec_   loop

變數1:=[item].[col1相對select語句的欄位名];

end loop;

例:declare

key_         number;

cname_      varchar2(50);

cursor rec_ is

select ikey,customername

from customer;

begin

for   item_ in rec_ loop

dbms_output.put_line('key:'||rec_.ikey||'#name:'||rec_.customername );

end loop;

end;

帶引數格式:

for item_ in rec_(值1,......) loop

變數1:=[item].[col1相對select語句的欄位名];

end loop;

例:declare

key_         number;

cname_      varchar2(50);

cursor rec_(cname_ varchar2) is

select ikey,customername

from customer

where customername=cname_;

begin

for   item_ in rec_('xx集團') loop

dbms_output.put_line('key:'||rec_.ikey||'#name:'||rec_.customername );

end loop;

end;

這些都是游標的最基本的應用,游標裡面可以巢狀游標,形成多迴圈。

ORACLE游標的應用

在oracle資料庫中,可以使用游標瀏覽資料 更新資料和刪除資料,接下來列舉以幾個簡單的例子 通過使用游標既可以逐行檢索結果集中的記錄,又可以更新或刪除當前游標行的資料如果要通過游標更新或刪除資料,在定義游標時必須要帶有for update子句其語句格式如下 cursor cursor name i...

游標的簡單應用

使用游標前資料 declare loginid varchar 50 declare loginpass varchar 50 declare cursor1 cursor for 定義游標cursor1 select loginid,loginpassword from users where l...

游標的基本操作

有時候希望能夠對瞞住特定條件的記錄逐一進行更新處理,可以使用 for update字句的游標 declare cursor c cur is select usernaem,jop from aspnet user where sal 3000 for update of sal begin ope...