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

首頁 > 數據庫 > Oracle > 正文

Oracle中的游標和函數詳解

2020-07-26 14:06:02
字體:
來源:轉載
供稿:網友

 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; 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲毛片一区二区| 久久精品国产久精国产一老狼| 日韩av电影手机在线| 91精品国产综合久久久久久蜜臀| 91精品免费视频| 国语自产精品视频在线看| 亚洲三级黄色在线观看| 超碰日本道色综合久久综合| 97超碰国产精品女人人人爽| 欧美激情久久久久久| 日本欧美一级片| 国产69精品久久久久9999| 91精品在线播放| xxxxx91麻豆| 最近2019中文免费高清视频观看www99| 欧美日韩精品在线视频| 欧美成人精品在线观看| 成人h视频在线| 国产精品免费视频xxxx| 精品久久久久久久中文字幕| 成人字幕网zmw| 久久影院资源网| 欧美黄色片视频| 国产999精品久久久影片官网| 久久久免费精品| 久久精品视频中文字幕| 中文字幕精品一区久久久久| 亚洲专区中文字幕| 亚洲欧洲自拍偷拍| 亚洲精品在线观看www| 国产一区二区丝袜高跟鞋图片| 国产成人福利夜色影视| 成人在线免费观看视视频| 亚洲美女中文字幕| 日韩美女视频在线观看| 日韩精品在线第一页| 中文字幕免费国产精品| 黑人巨大精品欧美一区二区一视频| 91免费综合在线| 亚洲第一精品久久忘忧草社区| 国产精品一区二区三区在线播放| 日本欧美中文字幕| 一区二区三区动漫| 日韩在线免费av| 最近免费中文字幕视频2019| 亚洲国产福利在线| 日韩成人性视频| 北条麻妃在线一区二区| 午夜精品一区二区三区在线| 国产亚洲欧美日韩精品| 成人免费激情视频| 久久久久99精品久久久久| 91久久国产综合久久91精品网站| 欧美亚洲激情视频| 国产日韩亚洲欧美| 伊人久久久久久久久久| 亚洲乱亚洲乱妇无码| 91亚洲精品一区| 色偷偷88888欧美精品久久久| 中文字幕九色91在线| 国产视频精品va久久久久久| 国产精品一区二区三区免费视频| 亚洲美女av在线| 日韩电影中文 亚洲精品乱码| 亚洲xxx大片| 成人性生交大片免费观看嘿嘿视频| 成人性生交大片免费看视频直播| 日韩精品极品视频| 5278欧美一区二区三区| 国产精品久久久久久久久久新婚| 精品一区二区三区三区| 精品久久久久久久大神国产| 精品国产拍在线观看| 久久精品久久久久久国产 免费| 欧美亚洲国产成人精品| 疯狂欧美牲乱大交777| 精品夜色国产国偷在线| 97在线视频观看| 欧美第一黄网免费网站| 成人国产精品一区二区| 国产香蕉一区二区三区在线视频| 国产精品免费久久久| 久久99久国产精品黄毛片入口| 91高清视频免费观看| 国语自产精品视频在免费| 国产精品草莓在线免费观看| 美女撒尿一区二区三区| 亚洲高清久久久久久| 久久天堂电影网| 国产精品av在线播放| 91精品久久久久久久久中文字幕| 日韩精品高清在线| 92裸体在线视频网站| 欧美巨猛xxxx猛交黑人97人| 美女性感视频久久久| 欧美成人午夜激情视频| 高清日韩电视剧大全免费播放在线观看| 日韩经典第一页| 日本中文字幕不卡免费| 国产在线高清精品| 欧美成人精品三级在线观看| 国产精品午夜国产小视频| 97香蕉超级碰碰久久免费软件| 亚洲人午夜精品免费| 狠狠爱在线视频一区| 亚洲国模精品私拍| 中文字幕亚洲无线码a| 亚洲激情视频网| 91av在线国产| 国产丝袜精品第一页| 国产精品福利网| 日韩一区av在线| 亚洲欧美三级在线| 亚洲第一网中文字幕| 欧美日韩亚洲一区二区| 亚洲天堂成人在线视频| 91亚洲精品在线| 成人精品久久一区二区三区| 欧美在线影院在线视频| 亚洲国产精品久久91精品| 一个人www欧美| 中文字幕精品国产| 成人免费网站在线| 538国产精品一区二区在线| 成人免费在线网址| 97国产成人精品视频| 亚洲福利视频在线| 日韩在线观看免费全集电视剧网站| 欧美日韩国产影院| 成年无码av片在线| 欧美成人中文字幕在线| 亚洲精品美女在线| 久久精品亚洲一区| 日韩风俗一区 二区| 亚洲第一精品夜夜躁人人躁| 色偷偷91综合久久噜噜| 精品动漫一区二区| 亚洲国产精品视频在线观看| 狠狠躁夜夜躁人人爽超碰91| 97人人爽人人喊人人模波多| 日韩av成人在线观看| 国产91对白在线播放| 色在人av网站天堂精品| 欧美性xxxxxx| 亚洲国产美女久久久久| 亚洲一区美女视频在线观看免费| 欧美性猛交视频| 国产成人精品av在线| 在线观看欧美视频| 色先锋资源久久综合5566| 国产精品一区=区| 神马久久久久久| 国产精品女人久久久久久| 色婷婷久久一区二区| 精品久久久久久久久国产字幕| 亚洲国产精品大全| 91成人在线视频| 国产精品成人在线| 精品视频久久久| 亚洲午夜久久久影院| 91精品国产成人| 热99精品里视频精品| 57pao成人永久免费视频| 最近2019年中文视频免费在线观看|