欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle如何存儲游標 oracle存儲過程定義游標

Oracle游標使用總結

Oracle游標分為顯示游標和隱式游標

創(chuàng)新互聯(lián)為客戶提供專業(yè)的網(wǎng)站設計制作、成都做網(wǎng)站、程序、域名、空間一條龍服務,提供基于WEB的系統(tǒng)開發(fā). 服務項目涵蓋了網(wǎng)頁設計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都手機網(wǎng)站制作等網(wǎng)站方面業(yè)務。

顯示游標(Explicit Cursor):在PL/SQL程序中定義的 用于查詢的游標稱作顯示游標

隱式游標(Implicit Cursor):是指非PL/SQL程序中定義的 而且是在PL/SQL中使用UPDATE/DELETE語句時 Oracle系統(tǒng)自動分配的游標

一 顯示游標

使用步驟

( )定義 ( )打開 ( )使用 ( )關閉

使用演示

首先創(chuàng)建測試用表STUDENT 腳本如下

( ) 使用WHILE循環(huán)處理游標

create or replace PROCEDURE PROC_STU AS

BEGIN

顯示游標使用 使用while循環(huán)

declare

定義游標 名稱為cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno;

定義變量 存放游標取出的數(shù)據(jù)

v_stuno varchar( );

v_stuname varchar( );

begin

打開游標cur_stu

open cur_stu;

將游標的當前行取出存放到變量中

fetch cur_stu into v_stuno v_stuname;

while cur_stu%found 游標所指還有數(shù)據(jù)行 則繼續(xù)循環(huán)

loop

打印結果

dbms_output PUT_LINE(v_stuno|| ||v_stuname);

繼續(xù)將游標所指的當前行取出放到變量中

fetch cur_stu into v_stuno v_stuname;

end loop;

close cur_stu; 關閉游標

end;

END PROC_STU ;

( ) 使用IF ELSE代替WHILE循環(huán)處理游標

create or replace PROCEDURE PROC_STU AS

BEGIN

顯示游標使用 使用if判斷

declare

定義游標 名稱為cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno;

定義變量 存放游標取出的數(shù)據(jù)

v_stuno varchar( );

v_stuname varchar( );

begin

打開游標cur_stu

open cur_stu;

將游標的當前行取出存放到變量中

fetch cur_stu into v_stuno v_stuname;

loop

if cur_stu%found then 如果游標cur_stu所指還有數(shù)據(jù)行

打印結果

dbms_output PUT_LINE(v_stuno|| ||v_stuname);

繼續(xù)將游標所指的當前行取出放到變量中

fetch cur_stu into v_stuno v_stuname;

else

exit;

end if;

end loop;

close cur_stu; 關閉游標

end;

END PROC_STU ;

( ) 使用FOR循環(huán)處理游標

create or replace PROCEDURE PROC_STU AS

BEGIN

顯示游標使用 使用for循環(huán)

declare

定義游標 名稱為cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno;

begin

for stu in cur_stu

loop

dbms_output PUT_LINE(stu stuno|| ||stu stuname);

循環(huán)做隱含檢查 %notfound

end loop;

自動關閉游標

end;

END PROC_STU ;

( ) 常用的使用EXIT WHEN處理游標

create or replace

PROCEDURE PROC_STU _ AS

BEGIN

顯示游標使用 使用exit when循環(huán)

declare

定義游標 名稱為cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno;

定義變量 存放游標取出的數(shù)據(jù)

v_stuno varchar( );

v_stuname varchar( );

begin

打開游標cur_stu

open cur_stu;

loop

將游標的當前行取出存放到變量中

fetch cur_stu into v_stuno v_stuname;

exit when cur_stu%notfound; 游標所指還有數(shù)據(jù)行 則繼續(xù)循環(huán)

打印結果

dbms_output PUT_LINE(v_stuno|| ||v_stuname);

end loop;

close cur_stu; 關閉游標

end;

END PROC_STU _ ;

二 隱式游標

使用演示

create or replace PROCEDURE PROC_STU AS

BEGIN

隱式游標使用

update student set stuname= 張燕廣 where stuno= ;

如果更新沒有匹配則插入一條新記錄

if SQL%NOTFOUND then

insert into student(STUNO STUNAME AGE GENDER)

values( 張燕廣 男 );

end if;

END PROC_STU ;

說明

所有的SQL語句在上下文區(qū)內(nèi)部都是可執(zhí)行的 因為都有一個游標指向上下文區(qū) 此游標就是

SQL游標 與現(xiàn)實游標不同的是 SQL游標在PL/SQL中不需要打開和關閉 而是在執(zhí)行UPDATE

DELETE是自動打開和關閉

上面例子中就是通過SQL%NOTFOUND游標屬性判斷UPDATE語句的執(zhí)行結果決定是否需要插入新記錄 CREATE TABLE STUDENT (

STUNAME VARCHAR ( BYTE)

STUNO VARCHAR ( BYTE)

AGE NUMBER

GENDER VARCHAR ( CHAR)

lishixinzhi/Article/program/Oracle/201311/17531

Oracle存儲過程游標for循環(huán)怎么寫

--數(shù)字

FOR?loop?index?IN?[REVERSE]?lowest?number?..?highest?number

LOOP

executable?statement(s)

END?LOOP;

具體情形:

FOR?loop_counter?IN?1?..?10

LOOP

...?executable?statements?...

END?LOOP;

--游標:

DECLARE

CURSOR?occupancy_cur?IS?

SELECT?pet_id,?room_number

FROM?occupancy?WHERE?occupied_dt?=?SYSDATE;

BEGIN

FOR?occupancy_rec?IN?occupancy_cur

LOOP

update_bill?(occupancy_rec.pet_id,?occupancy_rec.room_number);

END?LOOP;

END;

oracle存儲過程游標問題

--打開游標并提取后面SQL的第一行數(shù)據(jù)放到游標中 這里就是打開游標

open for 是隱式游標的寫法 不建議使用 這種游標好象不需要關閉 具體你自己測試下 而且少了expection 處理

fetch mycur into yang_02;

--循環(huán)插入數(shù)據(jù)

多余了 可以不要 前面有fetch了如果還有這里的話 就只能插入奇數(shù)行

其他沒什么問題了 還有你這個過程用ref cursor是浪費 沒必要用 用簡單的顯示游標更好點

oracle 存儲過程 游標

你游標木有定義把,一般都是這樣寫的.還有你的列名是a1,前面加了個限定t是把?如果加限定的話,那在from后面的數(shù)據(jù)來源表,就需要標明那個表是t.

vstr1 varchar2(100)

vstr2 varchar2(100)

declare r_cur cursor for select t.a1,t.a2 from abc t

open r_cur

fetch from r_cur into vstr1,vstr2

后面就是

while @@FETCH_STATUS = 0 .....等等不寫了。

反正游標頭我都是那么寫,沒有問題。

網(wǎng)站題目:oracle如何存儲游標 oracle存儲過程定義游標
分享路徑:http://chinadenli.net/article46/hjshhg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護云服務器定制開發(fā)外貿(mào)網(wǎng)站建設服務器托管虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司