21吧享、游標

游標是一種 PL/SQL 控制結(jié)構(gòu);可以對 SQL 語句的處理進行顯示控制庭呜,便于對表的行數(shù)據(jù)逐條進行處理滑进。

游標并不是一個數(shù)據(jù)庫對象,只是存留在內(nèi)存中


操作步驟:

??聲明游標

??打開游標

??取出結(jié)果募谎,此時的結(jié)果取出的是一行數(shù)據(jù)

??關閉游標到底那種類型可以把一行的數(shù)據(jù)都裝進來

??此時使用 ROWTYPE 類型扶关,此類型表示可以把一行的數(shù)據(jù)都裝進來。



?游標的屬性

?oracle游標有4個屬性: %ISOPEN 数冬, %FOUND 节槐, %NOTFOUND,%ROWCOUNT

--%ISOPEN 判斷游標是否被打開拐纱,如果打開%ISOPEN 等于true,否則等于false

--%FOUND %NOTFOUND 判斷游標所在的行是否有效铜异,如果有效,則%FOUNDD等于true秸架,否則等于false

-- %ROWCOUNT 返回當前位置為止游標讀取的記錄行數(shù)揍庄。


例子

查詢雇員編號為 7369 的信息(肯定是一行信息)。

DECLARE

??eno emp.empno%TYPE ;?

empInfo emp%ROWTYPE ;

BEGIN?

eno := &en ;

SELECT * INTO empInfo FROM emp WHERE empno=eno ;?

DBMS_OUTPUT.put_line('雇員編號:'||empInfo.empno) ;

DBMS_OUTPUT.put_line('雇員姓名:'||empInfo.ename) ;

END ;


使用 for 循環(huán)操作游標(比較常用)

DECLARE

? -- 聲明游標?

? CURSOR mycur IS? ? SELECT * FROM emp where empno = -1;

? empInfo emp%ROWTYPE;

? cou???? NUMBER;

BEGIN

? -- 游標操作使用循環(huán)东抹,但是在操作之前必須先將游標打開

? FOR empInfo IN mycur LOOP

??? cou := mycur%ROWCOUNT;

??? DBMS_OUTPUT.put_line(cou ||'雇員編號:'|| empInfo.empno);

??? DBMS_OUTPUT.put_line(cou ||'雇員姓名:'|| empInfo.ename);

? END LOOP;

END;



編寫第一個游標蚂子,輸出全部的信息

DECLARE

? -- 聲明游標

? CURSOR mycur IS

??? SELECT * FROMemp;

? -- List (EmpPo)

? empInfo emp%ROWTYPE;

BEGIN

? -- 游標操作使用循環(huán)沃测,但是在操作之前必須先將游標打開

? OPEN mycur;

? -- 使游標向下一行

? FETCH mycur INTO empInfo;

? -- 判斷此行是否有數(shù)據(jù)被發(fā)現(xiàn)??

? WHILE (mycur%FOUND) LOOP

??? DBMS_OUTPUT.put_line('雇員編號:'|| empInfo.empno);

??? DBMS_OUTPUT.put_line('雇員姓名:'|| empInfo.ename);

??? -- 修改游標,繼續(xù)向下??????????????

??? FETCH mycur? ? ?INTO empInfo;

? END LOOP;

END;



也可以使用另外一種方式循環(huán)游標:LOOP…END LOOP

DECLARE

? -- 聲明游標

? CURSOR mycur IS

??? SELECT * FROMemp;

? empInfo emp%ROWTYPE;

BEGIN

? -- 游標操作使用循環(huán)缆镣,但是在操作之前必須先將游標打開?

? OPEN mycur;

? LOOP

??? -- 使游標向下一行

??? FETCH mycur? ? ?INTOempInfo;

??? EXIT WHEN mycur%NOTFOUND;

??? DBMS_OUTPUT.put_line('雇員編號:'|| empInfo.empno);

??? DBMS_OUTPUT.put_line('雇員姓名:'|| empInfo.ename);

? END LOOP;

END;


注意 1:

?在打開游標之前最好先判斷游標是否已經(jīng)是打開的芽突。?

通過 ISOPEN 判斷,

格式:游標%ISOPEN

?IFmycur%ISOPEN THEN?? null ;

?ELSE??OPEN mycur ;

?ENDIF ;



注意 2:?

可以使用 ROWCOUNT 對游標所操作的行數(shù)進行記錄董瞻。

DECLARE

? -- 聲明游標

? CURSOR mycur IS

??? SELECT * FROMemp;

? empInfo emp%ROWTYPE;

? cou???? NUMBER;

BEGIN

? -- 游標操作使用循環(huán)寞蚌,但是在操作之前必須先將游標打開

? IF mycur%ISOPEN THEN

??? null;

? ELSE

??? OPENmycur;

? END IF;

? LOOP

??? -- 使游標向下一行?

??? FETCH mycur? ?INTO empInfo;

??? EXIT WHEN mycur%NOTFOUND;

??? cou := mycur%ROWCOUNT;

??? DBMS_OUTPUT.put_line(cou ||'雇員編號:'|| empInfo.empno);

??? DBMS_OUTPUT.put_line(cou ||'雇員姓名:'|| empInfo.ename);

? END LOOP;

END;


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钠糊,隨后出現(xiàn)的幾起案子挟秤,更是在濱河造成了極大的恐慌,老刑警劉巖抄伍,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艘刚,死亡現(xiàn)場離奇詭異,居然都是意外死亡截珍,警方通過查閱死者的電腦和手機攀甚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岗喉,“玉大人秋度,你說我怎么就攤上這事∏玻” “怎么了荚斯?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長查牌。 經(jīng)常有香客問我事期,道長,這世上最難降的妖魔是什么纸颜? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任兽泣,我火速辦了婚禮,結(jié)果婚禮上胁孙,老公的妹妹穿的比我還像新娘唠倦。我一直安慰自己,他們只是感情好浊洞,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布牵敷。 她就那樣靜靜地躺著胡岔,像睡著了一般法希。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靶瘸,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天苫亦,我揣著相機與錄音毛肋,去河邊找鬼。 笑死屋剑,一個胖子當著我的面吹牛润匙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唉匾,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼孕讳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巍膘?” 一聲冷哼從身側(cè)響起厂财,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎峡懈,沒想到半個月后璃饱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡肪康,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年荚恶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磷支。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡谒撼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出齐唆,到底是詐尸還是另有隱情嗤栓,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布箍邮,位于F島的核電站茉帅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锭弊。R本人自食惡果不足惜堪澎,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望味滞。 院中可真熱鬧樱蛤,春花似錦、人聲如沸剑鞍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚁署。三九已至便脊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間光戈,已是汗流浹背哪痰。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工遂赠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晌杰。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓跷睦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肋演。 傳聞我的和親對象是個殘疾皇子抑诸,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • ORACLE自學教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,066評論 0 0
  • 1.PLSQL入門 Oracle數(shù)據(jù)庫對SQL進行了擴展,然后加入了一些編程語言的特點,可以對SQL的執(zhí)行過程進行...
    隨手點燈閱讀 596評論 0 8
  • plsql語句塊: set serveroutput on; //打開控制臺輸出的命令 語法: declare 聲...
    Qing勇閱讀 972評論 0 0
  • 自從笑來老師鼓勵大家踐行坐享,本人開始關注冥想爹殊,購買并閱讀了幾本這類書籍哼鬓。說來也很有意思,自從關注它边灭,就總能有意無...
    踐行哲閱讀 649評論 1 1
  • 單位煤炭用完异希,無法做飯,自古就有巧婦難為無米之炊绒瘦,沒火也還是很難的称簿,和幾個戰(zhàn)友一起被派去拾柴,給炊事班生火做...
    似冰的夢閱讀 387評論 5 7