• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于游標技術的復雜數(shù)據(jù)庫檢索方案分析

      2016-11-24 16:12李茂斌姚紅朱海鵬
      電腦知識與技術 2016年26期
      關鍵詞:游標檢索

      李茂斌++姚紅++朱海鵬

      摘要:該文論述了在復雜數(shù)據(jù)庫編程中,使用游標檢索的方法對多條記錄的操作,很好地解決了數(shù)據(jù)庫編程中無法直接對多條記錄操作的問題。

      關鍵詞:游標;檢索;數(shù)據(jù)庫編程

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)26-0001-02

      Retrieving Resolution Analysis of Complicated Database Based on Cursor Technology

      LI Mao-bin,YAO Hong,ZHU Hai-peng

      (CSFCC,Chengdu 611731,China)

      Abstract: This paper introduce the retrieving technology using cursor for several records in process of complicated database programming. In a certain extent, it could greatly resolute the problems of several records which could not be operated during database programming.

      Key words: cursor;retrieval;database programme

      1 引言

      在數(shù)據(jù)庫開發(fā)過程中,當檢索的數(shù)據(jù)只是一條記錄時,我們經(jīng)常使用查詢語句。但是在實際開發(fā)中經(jīng)常會遇到這樣的情況,即從一個結果集中逐一地取出每條數(shù)據(jù),操作這條數(shù)據(jù),如何解決這種問題呢?游標技術正好提供了一個很好的解決方法。

      2 游標概述

      游標施展才華的地方是構建在SQL中,用來查詢數(shù)據(jù)庫,獲取記錄集合的指針,它可以讓開發(fā)者一次訪問一行結果集,這可以讓程序員完成需要分別在結果集中每個記錄上執(zhí)行的過程代碼的任務,游標可以讓我們以編程方式訪問我們的數(shù)據(jù)。

      在數(shù)據(jù)庫中,游標提供一種像C語言一樣對數(shù)據(jù)庫表檢索的靈活手段,使得程序員可以把結果集中的數(shù)據(jù)逐條取出來,來滿足程序的要求,避免SQL編碼中的短板。

      3 復雜信息數(shù)據(jù)庫編程問題的提出

      在某項目數(shù)據(jù)庫設計中,整件明細表導出的時候,整件涉及嵌套的問題,無法一次查詢完成,整件關系如圖1所示。這個時候就需要游標來解決。

      創(chuàng)建一個過程,過程中游標檢索子節(jié)點中是否還包含整件,如果包含就嵌套調(diào)用這個過程,如果沒有就直接檢索所有的值,按順序列出到明細表中,檢索流程如圖2所示。

      4 游標操作

      游標使用的步驟如下:聲明游標、打開游標、提取數(shù)據(jù)、關閉游標。

      4.1 聲明游標

      游標使用前,首先聲明它。游標的聲明包括兩個部分:游標的名稱和這個游標用到的SQL語句。如聲明一個PrjCursor的游標以查詢某個整件下面的明細表信息,可以編寫如下代碼:

      DECLARE PrjCursor CURSOR FOR

      SELECT * FROM view_Prj WHERE FathPrjNo ="168";

      游標的聲明有一點注意的是,聲明游標的代碼行是不執(zhí)行的,不能將debug時的斷點設在這一行代碼行上,也不能聲明兩個同名的游標。

      4.2 打開游標

      聲明了游標后,操作前先打開游標。打開后執(zhí)行這段SQL代碼,例如打開上面聲明的一個游標,我們需要輸入代碼:

      OPEN PrjCursor;

      打開游標是對數(shù)據(jù)庫進行查詢操作,這將耗費一段時間,具體耗費時間的量取決于使用系統(tǒng)的性能和SQL語句的復雜程度。

      4.3 提取數(shù)據(jù)

      當打開了游標并在數(shù)據(jù)庫中執(zhí)行了查詢后,要用FETCH語句來取得數(shù)據(jù)。一條FETCH語句一次可以將一條記錄放入程序員指定的變量中,通過FETCH語句我們逐條得到查詢結果。在FETCH語句中可以指定游標的名稱和目標變量的名稱。代碼如下:

      FETCH PrjCursor INTO emp_PrjCursor;

      上述方法就是取得一條數(shù)據(jù)的方法,通常情況下,我們要獲取一個結果集的數(shù)據(jù),所以我們通常都是把游標放置在一個循環(huán)體內(nèi),直至將結果集中的全部數(shù)據(jù)提取后,跳出循環(huán)。我們編寫如下代碼:

      loop

      fetch PrjCursor INTO emp_PrjCursor;

      if(emp_PrjCursor%found) then

      /*執(zhí)行操作語句*/

      end if;

      end loop;

      d) 關閉游標

      在游標操作完成后關閉游標,以使系統(tǒng)釋放游標占用的資源。代碼如下所示:

      CLOSE PrjCursor;

      5 實例

      通常我們把這段游標的代碼封裝在一個過程里,然后用這個過程來嵌套調(diào)用,這樣不管實際嵌套多少層,都可以很好的滿足要求。過程代碼如下:

      CREATE PROCEDURE procedure_MX(

      iFathPrjNo in number /*過程參數(shù):父節(jié)點序號*/

      BEGIN

      DECLARE CURSOR PrjCursor IS

      SELECT * FROM view_Prj WHERE FathPrjNo = iFathPrjNo ;

      emp_PrjCursor view_Prj %rowtype;

      BEGIN

      OPEN PrjCursor;

      LOOP

      FETCH PrjCursor INTO emp_PrjCursor;

      IF(emp_PrjCursor%FOUND) THEN

      procedure_MX(emp_PrjCursor. FathPrjNo);

      /*執(zhí)行操作語句*/

      END IF;

      END LOOP;

      CLOSE PrjCursor ;

      END;

      END procedure_MX;

      6 結論

      在復雜數(shù)據(jù)庫編程中,這種多條記錄查詢、操作的情況比較常見,但是數(shù)據(jù)庫語言又不能像高級語言一樣很靈活的進行循環(huán)嵌套等操作,游標技術很好地解決了這個問題,使得數(shù)據(jù)庫編程也可以實現(xiàn)高級語言的大部分操作,同時也可以為項目的其他部分提供借鑒。

      參考文獻:

      [1] Sean Dillon,Christopher Beck,等.袁勤勇,何欣,等譯.Oracle編程入門經(jīng)典[M].北京:清華大學出版社,2002.11.

      [2] Thomas Kyte.Orcale9i&10g編程藝術深入數(shù)據(jù)庫體系結構[M]. 蘇金國,王小振,等譯.北京:人民郵電出版社,2006.10.

      [3] Hector Garcia-Molina,Jeffrey.D.Ullman. Database Systems:the Complete Book(second edition)[M].Prentice Hall,2008.

      [4] Rahimi,Saeed K.Haug,Grank S. Distributed Database Management Systems:A Practical Approach[M]. Wiley-IEEE Computer Society Press,2010.

      猜你喜歡
      游標檢索
      V型游標永磁電機功率因數(shù)內(nèi)在機理及其提升方法
      開繞組直線游標永磁電機的矢量控制研究
      MySQL數(shù)據(jù)庫下游標的設計與應用
      測量不確定度在游標式輪對內(nèi)距尺檢定裝置中的應用
      物理實驗思維核心素養(yǎng)的培養(yǎng)與突破
      ——游標卡尺、螺旋測微器的應用和拓展
      2019年第4-6期便捷檢索目錄
      《國外醫(yī)藥抗生素分冊》第37卷1~6期(2016年)目次檢索
      專利檢索中“語義”的表現(xiàn)
      SQL數(shù)據(jù)庫中基于游標的數(shù)據(jù)更新
      國際|標準|檢索
      瑞昌市| 莒南县| 富阳市| 剑河县| 遂川县| 温宿县| 高阳县| 兰考县| 阿尔山市| 阳信县| 镇巴县| 弥渡县| 安新县| 义乌市| 古丈县| 沛县| 台州市| 远安县| 石屏县| 新晃| 安塞县| 舟曲县| 永德县| 重庆市| 新野县| 且末县| 伊金霍洛旗| 满城县| 分宜县| 江油市| 新源县| 华亭县| 浦北县| 呼图壁县| 玉环县| 松阳县| 靖西县| 株洲县| 虹口区| 双峰县| 彝良县|