国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

Oracle數據庫游標使用方法
2008-08-18   IT專家網

SQL是用于訪問Oracle數據庫的語言,PL/SQL擴展和加強了SQL的功能,它同時引入了更強的程序邏輯, 下面在本文中將對游標的使用進行一下講解,希望可以和大家共同學習進步。

  游標字面理解就是游動的光標。游標是SQL的一個內存工作區,由系統或用戶以變量的形式定義。在某些情況下,需要把數據從存放在磁盤的表中調到計算機內存中進行處理,最后將處理結果顯示出來或最終寫回數據庫。這樣數據處理的速度才會提高,否則頻繁的磁盤數據交換會降低效率。用數據庫語言來描述游標就是映射在結果集中一行數據上的位置實體,有了游標,用戶就可以訪問結果集中的任意一行數據了,將游標放置到某行后,即可對該行數據進行操作,例如提取當前行的數據等。

  游標有兩種類型:顯式游標和隱式游標。游標一旦打開,數據就從數據庫中傳送到游標變量中,然后應用程序再從游標變量中分解出需要的數據,并進行處理。

  當系統使用一個隱式游標時,可以通過隱式游標的屬性來了解操作的狀態和結果,進而控制程序的流程。隱式游標可以使用名字SQL來訪問,但要注意,通過SQL游標名總是只能訪問前一個處理操作或單行SELECT操作的游標屬性。所以通常在剛剛執行完操作之后,立即使用SQL游標名來訪問屬性。游標的屬性有四種,分別是SQL %ISOPEN,SQL %FOUND,SQL %NOTFOUND,SQL %ROWCOUNT。

  SQL%ISOPEN返回的類型為布爾型,判斷游標是否被打開,如果打開%ISOPEN等于true,否則等于false,即執行過程中為真,結束后為假。

  SQL%NOTFOUND返回值為布爾型,判斷游標所在的行是否有效,如果有效,則%FOUNDD等于true,否則等于false,即與%FOUND屬性返回值相反。

  SQL%FOUND返回值的類型為布爾型,值為TRUE代表插入 刪除 更新或單行查詢操作成功。

  SQL%ROWCOUNT返回值類型為整型,返回當前位置為止游標讀取的記錄行數,即成功執行的數據行數。 示例代碼如下:

      set serveroutput on;
  declare
  varno varchar2(20);
  varprice varchar2(20);
  CURSOR mycur(vartype number) is
  select emp_no,emp_zc from cus_emp_basic
  where com_no = vartype;
  begin
  if mycur%isopen = false then
  open mycur(043925);
  end if;
  fetch mycur into varno,varprice;
  while mycur%found
  loop
  dbms_output.put_line(varno||','||varprice);
  if mycur%rowcount=2 then
  exit;
  end if;
  fetch mycur into varno,varprice;
  end loop;
  close mycur;
  end;

  記錄并不保存在數據庫中,它與變量一樣,保存在內存空間中,在使用記錄時候,要首先定義記錄結構,然后聲明記錄變量。可以把PL/SQL記錄看作是一個用戶自定義的數據類型。

  游標for循環是顯示游標的一種快捷使用方式,它使用for循環依次讀取結果集中的行數據,當form循環開始時,游標自動打開(不需要open),每循環一次系統自動讀取游標當前行的數據(不需要fetch),當退出for循環時,游標被自動關閉(不需要使用close)。使用游標for循環的時候不能使用open語句,fetch語句和close語句,否則會產生錯誤。

      set serveroutput on;
  declare
  cursor mycur(vartype number)is
  select emp_no,emp_zc from cus_emp_basic
  where com_no=vartype;
  begin
  for person in mycur(000627) loop
  dbms_output.put_line('編號:'||person.emp_no||',住址:'||person.emp_zc);
  end loop;
  end;

  顯式游標的使用總共分4個步驟:

  1.聲明游標

  在DECLEAR部分按以下格式聲明游標:

  CURSOR 游標名[(參數1 數據類型[參數2 數據類型...])]

  IS SELECT語句;

  參數是可選部分,所定義的參數可以出現在SELECT語句的WHERE子句中。如果定義了參數,則必須在打開游標時傳遞相應的實際參數。

  SELECT語句是對表或視圖的查詢語句,甚至也可以是聯合查詢。可以帶WHERE條件、ORDER BY或GROUP BY等子句,但不能使用INTO子句。在SELECT語句中可以使用在定義游標之前定義的變量。

  例:

      DELCARE
  CURSOR C_EMP IS SELECT empno,ename,salary
  FROM emp   WHERE salary>1500
  ORDER BY ename;
  ........
  BEGIN

  在游標定義中SELECT語句中不一定非要表可以是視圖,也可以從多個表或視圖中選擇.

  2.打開游標

  使用游標中的值之前應該首先打開游標,打開游標初始化查詢處理。打開游標的語法

  OPEN 游標名[(實際參數1[實際參數2,...])];

  打開游標時,SELECT語句的查詢結果就被傳送到了游標工作區。

  例:

  OPEN C_EMP;

  3.提取數據

  從游標得到一行數據使用FETCH命令。每一次提取數據后,游標都指向結果集的下一

  FETCH cursor_name INTO variable[,variable,...]

  對于SELECT定義的游標的每一列,FETCH變量列表都應該有一個變量與之相對應,變

  在可執行部分,按以下格式將游標工作區中的數據取到變量中。提取操作必須在打開游標之后進行。

  FETCH 游標名 INTO 變量名1[變量名2,...];

  或

  FETCH 游標名 INTO 記錄變量;

  游標打開后有一個指針指向數據區,FETCH語句一次返回指針所指的一行數據,要返回多行需重復執行,可以使用循環語句來實現。控制循環可以通過判斷游標的屬性來進行。

  下面對這兩種格式進行說明:

  第一種格式中的變量名是用來從游標中接收數據的變量,需要事先定義。變量的個數和類型應與SELECT語句中的字段變量的個數和類型一致。

  第二種格式一次將一行數據取到記錄變量中,需要使用%ROWTYPE事先定義記錄變量,這種形式使用起來比較方便,不必分別定義和使用多個變量。

  定義記錄變量的方法如下:

  變量名 表名|游標名%ROWTYPE;

  其中的表必須存在,游標名也必須先定義。

  4.關閉游標

  CLOSE 游標名;

  例:

  CLOSE C_EMP;

  顯式游標打開后,必須顯式地關閉。游標一旦關閉,游標占用的資源就被釋放,游標變成無效,必須重新打開才能使用。

  Oracle支持動態SELECT語句和動態游標,動態的方法大大擴展了程序設計的能力。

  對于查詢結果為一行的SELECT語句,可以用動態生成查詢語句字符串的方法,在程序執行階段臨時地生成并執行,語法是:

  execute immediate 查詢語句字符串 into 變量1[,變量2,...];

  在變量聲明部分定義的游標是靜態的,不能在程序運行過程中修改。雖然可以通過參數傳遞來取得不同的數據,但還是有很大的局限性。通過采用動態游標,可以在程序運行階段隨時生成一個查詢語句作為游標。要使用動態游標需要先定義一個游標類型,然后聲明一個游標變量,游標對應的查詢語句可以在程序的執行過程中動態地說明。

熱詞搜索:

上一篇:挑戰系統 完成非常任務
下一篇:Windows系統中Svchost進程應用技巧

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
欧美精品一区二区在线观看| 国产蜜臀av在线一区二区三区| 欧美日韩国产高清一区二区| av影院午夜一区| 欧美日韩一区二区三区不卡| 欧美日韩www| 久久欧美一区二区| 亚洲一区二区三区美女| 精品一区二区三区香蕉蜜桃| 大胆欧美人体老妇| 免费一级欧美片在线观看| 99精品视频一区| 成人av在线观| 日韩美女天天操| 亚洲三级视频在线观看| 蜜臀久久99精品久久久久久9| 成人午夜免费电影| 日韩一区二区三区电影| 亚洲色图在线视频| 国产一区二区三区免费播放| 在线不卡中文字幕播放| 中文字幕一区二区在线播放| 裸体在线国模精品偷拍| 在线观看不卡视频| 自拍偷在线精品自拍偷无码专区| 七七婷婷婷婷精品国产| 欧美巨大另类极品videosbest| 国产精品污网站| 狂野欧美性猛交blacked| 91精品国产乱| 美女看a上一区| 欧美sm美女调教| 奇米色777欧美一区二区| 欧美肥大bbwbbw高潮| 亚洲一区二区在线观看视频| 91在线观看下载| 亚洲激情自拍偷拍| 欧美日本免费一区二区三区| 午夜影院久久久| 日韩欧美一区二区在线视频| 久久国产三级精品| 国产精品嫩草影院com| 91在线一区二区| 日韩影视精彩在线| 久久色.com| 欧美午夜在线一二页| 美女在线一区二区| 久久久精品国产免费观看同学| 99久久精品费精品国产一区二区| 亚洲精品五月天| 欧美电影免费提供在线观看| 色婷婷亚洲综合| 青青草成人在线观看| 国产精品视频一二三| 欧美日韩免费在线视频| 国产最新精品免费| 曰韩精品一区二区| 久久人人爽爽爽人久久久| 9色porny自拍视频一区二区| 日本不卡视频一二三区| 亚洲手机成人高清视频| 精品对白一区国产伦| 91天堂素人约啪| 国产丶欧美丶日本不卡视频| 视频一区国产视频| 亚洲精品写真福利| 国产精品欧美精品| 一区二区三区久久久| 中文av字幕一区| 久久影音资源网| 日韩精品资源二区在线| 欧美性大战xxxxx久久久| 色噜噜狠狠成人网p站| 国产成人h网站| 成人美女视频在线观看18| 黄页视频在线91| 欧美区视频在线观看| 色八戒一区二区三区| 91蝌蚪国产九色| 欧美视频自拍偷拍| 欧美欧美欧美欧美首页| 日本一区二区在线不卡| 中文字幕第一区第二区| 国产三级精品视频| 亚洲欧洲精品一区二区精品久久久| 中文字幕久久午夜不卡| 国产精品人成在线观看免费| 亚洲欧美国产三级| 免费在线看成人av| 国产乱码精品一区二区三| 国产精品一区二区免费不卡| 成人涩涩免费视频| 欧美电影影音先锋| 日韩一区在线看| 免费成人性网站| 97国产精品videossex| 欧美老肥妇做.爰bbww视频| 久久青草欧美一区二区三区| 中文字幕在线观看不卡| 日韩在线一区二区| 99久久综合精品| 精品福利在线导航| 天天综合色天天综合| 成人晚上爱看视频| 欧美videofree性高清杂交| 亚洲精品亚洲人成人网| 国产一区二区视频在线播放| 91福利视频久久久久| 亚洲国产成人私人影院tom| 亚洲电影你懂得| 91浏览器在线视频| 国产欧美日韩亚州综合| 日本欧美一区二区| 久久久国产一区二区三区四区小说 | 成人午夜看片网址| 精品国产免费人成在线观看| 亚洲欧美偷拍另类a∨色屁股| 国精产品一区一区三区mba桃花 | 国产乱码精品一区二区三区av | 日本成人在线不卡视频| 欧美日韩一本到| 亚洲福中文字幕伊人影院| 欧美系列一区二区| 亚洲国产日产av| 欧美日韩成人高清| 午夜精品视频一区| 日韩欧美亚洲国产另类| 奇米精品一区二区三区四区| 欧美一级夜夜爽| 免费av网站大全久久| 日韩三级视频中文字幕| 裸体歌舞表演一区二区| 久久久91精品国产一区二区三区| 久久99久久99| 国产精品免费看片| 欧美日韩一区小说| 蜜臀久久99精品久久久久宅男| 久久综合久久鬼色中文字| 国产精品亚洲第一区在线暖暖韩国| 国产亚洲人成网站| 91九色最新地址| 看电影不卡的网站| 亚洲女同ⅹxx女同tv| 国产偷国产偷精品高清尤物| 日本韩国精品一区二区在线观看| 亚洲成a人v欧美综合天堂下载| 精品美女一区二区| 91免费看片在线观看| 日本三级韩国三级欧美三级| 欧美国产一区在线| xnxx国产精品| 欧美成人三级在线| 欧美影院午夜播放| www.日韩在线| 国产剧情一区二区| 91女厕偷拍女厕偷拍高清| 韩国成人在线视频| 亚洲成人av电影在线| 国产精品三级电影| 久久久.com| 久久综合九色综合97婷婷| 日韩视频免费直播| 欧美一级免费观看| 欧美色爱综合网| 色婷婷久久综合| 欧美在线播放高清精品| 日本高清视频一区二区| 97久久超碰精品国产| 成人小视频在线观看| 欧美日韩亚洲丝袜制服| 日本精品一区二区三区高清| 91在线国内视频| 欧美在线你懂得| 日韩欧美你懂的| 精品国产91乱码一区二区三区| 久久先锋影音av鲁色资源| 精品国产免费视频| 国产精品色婷婷久久58| 国产精品二三区| 亚洲国产精品一区二区www在线| 夜色激情一区二区| 日本不卡一区二区| 国产精品一区二区91| 94-欧美-setu| 精品久久久久久久久久久久包黑料| 欧美不卡一区二区三区四区| 国产亚洲一区二区三区在线观看| 中文字幕在线免费不卡| 免费在线观看一区| 99riav久久精品riav| 欧美mv日韩mv国产网站app| 国产日韩成人精品| 亚洲r级在线视频| 懂色av噜噜一区二区三区av| 欧美日韩另类一区| 亚洲国产激情av| 日韩av在线播放中文字幕| 不卡视频在线观看| 久久久久久99久久久精品网站| 亚洲自拍欧美精品|