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

Oracle中的游標(biāo)和函數(shù)詳解

 Oracle中的游標(biāo)和函數(shù)詳解

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的獻(xiàn)縣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1.游標(biāo)

游標(biāo)是一種 PL/SQL 控制結(jié)構(gòu);可以對(duì) SQL 語(yǔ)句的處理進(jìn)行顯示控制,便于對(duì)表的行數(shù)據(jù)

逐條進(jìn)行處理。 游標(biāo)并不是一個(gè)數(shù)據(jù)庫(kù)對(duì)象,只是存留在內(nèi)存中。

操作步驟:

   聲明游標(biāo)
   打開(kāi)游標(biāo)

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

   關(guān)閉游標(biāo) 到底那種類型可以把一行的數(shù)據(jù)都裝進(jìn)來(lái)

   此時(shí)使用 ROWTYPE 類型,此類型表示可以把一行的數(shù)據(jù)都裝進(jìn)來(lái)。 例如:查詢雇員編號(hào)為 7369 的信息(肯定是一行信息)。

例:查詢雇員編號(hào)為 7369 的信息(肯定是一行信息)。

DECLARE 
  eno emp.empno%TYPE ;  
  empInfo emp%ROWTYPE ;  
BEGIN 
  eno := &en ; 
  SELECT * INTO empInfo FROM emp WHERE empno=eno ;  
  DBMS_OUTPUT.put_line('雇員編號(hào):'||empInfo.empno) ;  
  DBMS_OUTPUT.put_line('雇員姓名:'||empInfo.ename) ;  
END ; 

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

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

我們可以看到游標(biāo)FOR循環(huán)確實(shí)很好的簡(jiǎn)化了游標(biāo)的開(kāi)發(fā),我們不在需要open、fetch和close語(yǔ)句,不在需要用%FOUND屬性檢測(cè)是否到最后一條記錄,這一切Oracle隱式的幫我們完成了。 

編寫(xiě)第一個(gè)游標(biāo),輸出全部的信息。

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

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

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

注意 1: 在打開(kāi)游標(biāo)之前最好先判斷游標(biāo)是否已經(jīng)是打開(kāi)的。

通過(guò) ISOPEN 判斷

格式:

游標(biāo)%ISOPEN IF mycur%ISOPEN THEN 
null ;  
ELSE  
OPEN mycur ;  
END IF ; 

注意 2:可以使用 ROWCOUNT 對(duì)游標(biāo)所操作的行數(shù)進(jìn)行記錄。

DECLARE 
  -- 聲明游標(biāo) 
  CURSOR mycur IS SELECT * FROM emp ; 
  empInfo emp%ROWTYPE ; 
  cou NUMBER ; BEGIN 
  -- 游標(biāo)操作使用循環(huán),但是在操作之前必須先將游標(biāo)打開(kāi) 
  IF mycur%ISOPEN THEN 
    null ;  
  ELSE 
    OPEN mycur ;  
  END IF ;  
  LOOP 
    -- 使游標(biāo)向下一行 
    FETCH mycur INTO empInfo ; 
    EXIT WHEN mycur%NOTFOUND ; 
    cou := mycur%ROWCOUNT ;  
    DBMS_OUTPUT.put_line(cou||'雇員編號(hào):'||empInfo.empno) ;  
    DBMS_OUTPUT.put_line(cou||'雇員姓名:'||empInfo.ename) ;  
  END LOOP ; 
END ; 

2.函數(shù)

函數(shù)就是一個(gè)有返回值的過(guò)程。

定義一個(gè)函數(shù):此函數(shù)可以根據(jù)雇員的編號(hào)查詢出雇員的年薪

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 ; 

直接寫(xiě) SQL 語(yǔ)句,調(diào)用此函數(shù):

SELECT myfun(7369) FROM dual ; 

寫(xiě)一個(gè)函數(shù)  輸入一個(gè)員工名字,判斷該名字在員工表中是否存在。存在返回 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; 

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

本文標(biāo)題:Oracle中的游標(biāo)和函數(shù)詳解
標(biāo)題URL:http://chinadenli.net/article48/jsihhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、微信公眾號(hào)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)公司

廣告

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

商城網(wǎng)站建設(shè)
草草视频精品在线观看| 护士又紧又深又湿又爽的视频| 中文字幕亚洲人妻在线视频| 91人妻人人揉人人澡人| 久草视频在线视频在线观看| 国产在线一区二区三区不卡 | 精品国产成人av一区二区三区| 日韩欧美好看的剧情片免费| 欧美激情中文字幕综合八区| 二区久久久国产av色| 国产毛片对白精品看片| 欧美加勒比一区二区三区| 欧美一区二区在线日韩| 国产女性精品一区二区三区| 日本一级特黄大片国产| 成人精品一级特黄大片| 精品一区二区三区免费看| 欧美一区日韩二区亚洲三区| 九九热视频网在线观看| 日韩免费午夜福利视频| 欧美日韩精品久久第一页| 亚洲熟女精品一区二区成人| 日本午夜免费观看视频| 高清亚洲精品中文字幕乱码| 国产精品久久熟女吞精| 国产精品午夜福利在线观看| 国产91麻豆精品成人区| 国产美女精品人人做人人爽| 亚洲精品中文字幕熟女| 精品偷拍一区二区三区| 精品女同在线一区二区| 在线观看视频日韩精品| 亚洲另类女同一二三区| 日韩国产亚洲欧美激情| 精品国产亚洲av成人一区| 丝袜破了有美女肉体免费观看 | 国产人妻熟女高跟丝袜| 国产户外勾引精品露出一区| 欧美一级特黄特色大色大片| 亚洲欧美日韩熟女第一页| 美女黄色三级深夜福利|