亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle中的游標和函數詳解

2024-08-29 14:00:09
字體:
來源:轉載
供稿:網友

 Oracle中的游標和函數詳解

1.游標

游標是一種 PL/SQL 控制結構;可以對 SQL 語句的處理進行顯示控制,便于對表的行數據

逐條進行處理。 游標并不是一個數據庫對象,只是存留在內存中。

操作步驟:

   聲明游標
   打開游標

   取出結果,此時的結果取出的是一行數據

   關閉游標 到底那種類型可以把一行的數據都裝進來

   此時使用 ROWTYPE 類型,此類型表示可以把一行的數據都裝進來。 例如:查詢雇員編號為 7369 的信息(肯定是一行信息)。

例:查詢雇員編號為 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 循環操作游標(比較常用)

DECLARE   -- 聲明游標   CURSOR mycur IS SELECT * FROM emp where empno=-1;   empInfo emp%ROWTYPE ;   cou NUMBER ;  BEGIN   -- 游標操作使用循環,但是在操作之前必須先將游標打開   FOR empInfo IN mycur    LOOP     --ROWCOUNT 對游標所操作的行數進行記錄     cou := mycur%ROWCOUNT ;      DBMS_OUTPUT.put_line(cou||'雇員編號:'||empInfo.empno) ;      DBMS_OUTPUT.put_line(cou||'雇員姓名:'||empInfo.ename) ;    END LOOP ; END ;  

我們可以看到游標FOR循環確實很好的簡化了游標的開發,我們不在需要open、fetch和close語句,不在需要用%FOUND屬性檢測是否到最后一條記錄,這一切Oracle隱式的幫我們完成了。 

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

DECLARE   -- 聲明游標   CURSOR mycur IS SELECT * FROM emp ; -- 相當于一個List (EmpPo)   empInfo emp%ROWTYPE ;  BEGIN   -- 游標操作使用循環,但是在操作之前必須先將游標打開   OPEN mycur ;   -- 使游標向下一行   FETCH mycur INTO empInfo ;   -- 判斷此行是否有數據被發現   WHILE (mycur%FOUND)      LOOP        DBMS_OUTPUT.put_line('雇員編號:'||empInfo.empno) ;        DBMS_OUTPUT.put_line('雇員姓名:'||empInfo.ename) ;       -- 修改游標,繼續向下       FETCH mycur INTO empInfo ;      END LOOP ; END ; 

也可以使用另外一種方式循環游標:LOOP…END LOOP;

DECLARE   -- 聲明游標   CURSOR mycur IS SELECT * FROM emp ;   empInfo emp%ROWTYPE ;  BEGIN   -- 游標操作使用循環,但是在操作之前必須先將游標打開   OPEN mycur ;    LOOP     -- 使游標向下一行     FETCH mycur INTO empInfo ;     EXIT WHEN mycur%NOTFOUND ;      DBMS_OUTPUT.put_line('雇員編號:'||empInfo.empno) ;      DBMS_OUTPUT.put_line('雇員姓名:'||empInfo.ename) ;   END LOOP ;  END ; 

注意 1: 在打開游標之前最好先判斷游標是否已經是打開的。

通過 ISOPEN 判斷

格式:

游標%ISOPEN IF mycur%ISOPEN THEN null ;  ELSE  OPEN mycur ;  END IF ; 

注意 2:可以使用 ROWCOUNT 對游標所操作的行數進行記錄。

DECLARE   -- 聲明游標   CURSOR mycur IS SELECT * FROM emp ;   empInfo emp%ROWTYPE ;   cou NUMBER ; BEGIN   -- 游標操作使用循環,但是在操作之前必須先將游標打開   IF mycur%ISOPEN THEN     null ;    ELSE     OPEN mycur ;    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 ; 

2.函數

函數就是一個有返回值的過程。

定義一個函數:此函數可以根據雇員的編號查詢出雇員的年薪

CREATE OR REPLACE FUNCTION myfun(eno emp.empno%TYPE)    RETURN NUMBER AS rsal NUMBER ;  BEGIN   SELECT (sal+nvl(comm,0))*12 INTO rsal FROM emp WHERE empno=eno ;   RETURN rsal ;  END ; 

直接寫 SQL 語句,調用此函數:

SELECT myfun(7369) FROM dual ; 

寫一個函數  輸入一個員工名字,判斷該名字在員工表中是否存在。存在返回 1,不存在返回 0

create or replace function empfun(en emp.ename%type)    return number as is_exist number; begin   select count(*) into is_exist from emp where ename=upper(en);   return is_exist; end; 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品国产精品大乳美女| 在线电影欧美日韩一区二区私密| 奇米成人av国产一区二区三区| 日韩视频在线一区| 久久久在线视频| 成人亚洲欧美一区二区三区| 日韩精品在线视频| 亚洲r级在线观看| 亚洲最新av在线网站| 亚洲小视频在线观看| 国产精品一久久香蕉国产线看观看| 亚洲精品不卡在线| 亚洲男人的天堂网站| 亚洲国产成人爱av在线播放| 久久精品国产视频| 欧美国产日韩一区二区| 亚洲高清免费观看高清完整版| 欧美美女操人视频| 亚洲欧美国产精品久久久久久久| 亚洲尤物视频网| 欧美大奶子在线| 91精品国产成人| 午夜精品久久久久久久男人的天堂| 狠狠爱在线视频一区| 日本国产一区二区三区| 久久天天躁夜夜躁狠狠躁2022| 欧美激情视频播放| 日韩美女免费视频| 国产在线观看精品一区二区三区| 国产三级精品网站| 亚洲男人第一网站| 国产一区二区三区视频| 在线看片第一页欧美| 亚洲女人被黑人巨大进入| 色偷偷88888欧美精品久久久| 中文字幕av日韩| 欧美午夜精品伦理| 国产精品专区一| 色婷婷**av毛片一区| 热门国产精品亚洲第一区在线| 欧美精品免费在线观看| zzijzzij亚洲日本成熟少妇| 国产97在线视频| 欧美专区第一页| 国产在线精品成人一区二区三区| 午夜精品久久久久久久久久久久久| 亚洲国产91精品在线观看| 亚洲精品天天看| 欧美中文字幕视频在线观看| 在线精品91av| 国产精品日韩电影| 国产日本欧美一区二区三区| 成人在线一区二区| 成人乱人伦精品视频在线观看| 欧美www视频在线观看| 欧美日韩亚洲成人| 欧美视频13p| 久久韩剧网电视剧| 国产精品国产三级国产aⅴ浪潮| 91精品视频播放| 国产精品久久一区主播| 久久人人爽国产| 亚洲色图50p| 精品国产乱码久久久久久婷婷| 韩国19禁主播vip福利视频| 国产精品午夜一区二区欲梦| 国产精品久久久久久久久久小说| 国产91色在线| 欧美极品美女视频网站在线观看免费| 色悠悠久久久久| 亚洲成年人在线| 久久视频免费在线播放| 国产精品91视频| 欧美国产日韩在线| 国产精品91在线观看| 日韩欧美国产网站| 日韩激情在线视频| 中文字幕在线观看亚洲| 欧美国产中文字幕| 国内精品久久久久久影视8| 91老司机在线| 国产精品免费视频xxxx| 91av国产在线| 久99久在线视频| 国产精品白丝jk喷水视频一区| 精品国产一区二区三区久久久狼| 日本精品久久中文字幕佐佐木| 日韩**中文字幕毛片| 超薄丝袜一区二区| 亚洲黄色av网站| 亚洲国产精品电影在线观看| www日韩中文字幕在线看| 欧美视频不卡中文| 亚洲最大在线视频| 久久久亚洲欧洲日产国码aⅴ| 国内偷自视频区视频综合| 亚洲最大在线视频| 亚洲国产精品热久久| www国产精品视频| 亚洲日本欧美日韩高观看| 欧美精品激情blacked18| 国产91免费观看| 日本精品一区二区三区在线播放视频| 亚洲欧洲中文天堂| 欧美华人在线视频| 亚洲精品少妇网址| 91视频免费在线| 亚洲丁香婷深爱综合| 欧美成年人在线观看| 国产精品大片wwwwww| 97在线视频国产| 国产精品亚洲自拍| 91免费国产网站| 欧美一乱一性一交一视频| 欧美影院在线播放| 国产精品扒开腿做爽爽爽男男| 欧美日韩国产精品一区二区不卡中文| 欧美日韩国产综合视频在线观看中文| 成人有码视频在线播放| 成人av在线网址| 久久99久久99精品免观看粉嫩| 亚洲激情电影中文字幕| 成人xvideos免费视频| 日韩有码视频在线| 亚洲欧美在线磁力| 日本精品免费观看| 免费不卡在线观看av| 欧美激情在线观看视频| 欧美午夜激情小视频| 久久在线免费观看视频| 亚洲片国产一区一级在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲精品一区二区网址| 亚洲精品中文字幕女同| 亚洲日本成人女熟在线观看| 国产精品男女猛烈高潮激情| 91在线观看免费高清| 狠狠色狠狠色综合日日五| 91久久久久久久久久| 91欧美日韩一区| 7m精品福利视频导航| 欧美激情国产日韩精品一区18| 国产视频精品免费播放| 久久全国免费视频| 欧美日韩一区二区免费视频| 日韩av毛片网| 国产精品欧美激情在线播放| 久久久国产精品视频| 成人乱色短篇合集| 亚洲第一区在线| 国产欧美精品va在线观看| 欧美激情久久久久久| 欧美激情一级精品国产| 日韩成人性视频| 欧美日韩国产精品一区二区不卡中文| 久久在线免费观看视频| 精品少妇一区二区30p| 性欧美办公室18xxxxhd| 国产精品mp4| 国产精品无码专区在线观看| 成人免费高清完整版在线观看| 在线播放国产精品| 2021国产精品视频| 久久久久北条麻妃免费看|