一、使用游標的理由。
我本是乙個用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...