真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle如何關閉游標 oracle游標刪除數(shù)據(jù)

Oracle游標使用總結

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

創(chuàng)新互聯(lián)是專業(yè)的黟縣網(wǎng)站建設公司,黟縣接單;提供網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行黟縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(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游標

--Oracle?PL/SQL

declare

--定義游標

cursor?cur_test?is

select?*?from?emp;

v_emp?emp%rowtype;

begin

--打開游標

open?cur_test;

loop

--獲取游標值

fetch?cur_test

into?v_emp;

exit?when?cur_test%notfound;--屬性為是否提取數(shù)據(jù)成功,不成功則TRUE

dbms_output.put_line(v_emp.empno?||?'_'?||?v_emp.ename);

end?loop;

--關閉游標

close?cur_test;

end;

oracle如何關閉游標?

1. 用open打開的,用close關閉\x0d\x0adeclare\x0d\x0acursor mycursor is\x0d\x0aselect * from emp for update;\x0d\x0amyrecord emp%rowtype;\x0d\x0abegin\x0d\x0aopen mycursor;\x0d\x0aloop\x0d\x0afetch mycursor into myrecord;\x0d\x0aexit when mycursor%notfound;\x0d\x0aif (myrecord.sal=2000) then\x0d\x0aupdate emp\x0d\x0aset sal=2001\x0d\x0awhere current of mycursor;\x0d\x0aend if;\x0d\x0aend loop;\x0d\x0aclose mycursor;\x0d\x0acommit;\x0d\x0aend;\x0d\x0a2. 用for 循環(huán)的,循環(huán)完了就自己關了\x0d\x0adeclare\x0d\x0acursor mycursor is\x0d\x0aselect * from emp;\x0d\x0abegin\x0d\x0afor i in mycursor\x0d\x0aloop\x0d\x0adbms_output.put_line(i.job);\x0d\x0aend loop;\x0d\x0aend;


新聞標題:oracle如何關閉游標 oracle游標刪除數(shù)據(jù)
文章地址:http://weahome.cn/article/hpdogd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部