<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 使用OLE DB和ADO調用返回記錄集的Oracle存儲過程

    時間:2024-04-28 22:34:00 計算機畢業論文 我要投稿
    • 相關推薦

    使用OLE DB和ADO調用返回記錄集的Oracle存儲過程

    摘要 OLE DB是建立在ODBC成功基礎上的一種開放規范,它為訪問和操縱不同類型數據提供開放的標準。ADO是OLD DB的一個消費者,它提供了對OLE DB數據源應用級的訪問功能。在應用程序中使用OLE DB和ADO,可以高效地調用返回記錄集的Oracle存儲過程。

    關鍵字 OLE DB ADO 存儲過程 記錄集

    1 前言
    在基于Oracle數據庫的ADO應用程序的開發過程中,為了提高執行速度和降低網絡流量,往往要在應用程序中調用Oracle數據庫服務器端的存儲過程。有的存儲過程需要返回多行的記錄集。這種情況下,在應用程序中調用返回記錄集的存儲過程存在一定的難度。本文介紹如何使用OLE DB和ADO調用返回記錄集的Oracle存儲過程。
    2 OLE DB和ADO的關系
    2.1 OLE DB簡介
    OLE DB建立在ODBC成功基礎上的開放的規范,它為訪問和操縱不同類型數據提供開放的標準。OLE DB定義了一個COM接口集合,它封裝了各種數據庫管理系統服務。這些接口允許創建實現這些服務的軟件組件。OLE DB組件包括數據提供者(存儲和發布數據)、數據消費者(使用數據)和服務組件(處理和傳輸數據)。
    OLE DB的設計是以消費者和提供者概念為中心。OLE DB消費者表示傳統的客戶方,提供者將數據以表格形式傳遞給消費者。OLE DB的Oracle提供者(OraOLEDB)可使OLE DB消費者高效地訪問Oracle數據源。圖1給出OLE DB的系統圖示。OLE DB數據提供者將數據從數據源傳遞給消費者。在標準接口的基礎上,OLE DB消費者能夠訪問來自提供者的數據。因為有COM組件,消費者可以用任何支持COM的編程語言訪問數據。

    2.2 ADO對象模在ADO對象模型中,Connection、Command和Recordset對象是三個主要的對象。Connection對象表示對遠程數據的連接。Connection對象可與Command對象或Recordset對象關聯。Command對象定義了對數據源執行的指定命令。Command對象可以用來執行命令和參數化的SQL語句,可以用于SQL語句和返回記錄集的SQL查詢。Command對象既可以使用一個活動的Connection對象,也可以創建它自己到目標數據源的連接。Command對象包含一個Parameters集合,在該集合中每一個Parameter對象表示Command對象使用的參數。Command對象執行參數化的SQL語句時,每一個Parameter對象表示SQL語句中的一個參數。Recordset對象表示的來自基本表或命令執行結果的記錄全集。Recordset對象既可以使用一個活動的Connection對象,也可以創建它自己到目標數據源的連接。Recordset對象允許查詢和修改數據。每一個Recordset包含一個Field對象集合,其中,每個Field對象表示Recordset中一個數據列。
    2.3 ADO和OLE DB的關系
    OLE DB是系統級編程接口,ADO是應用軟件級編程接口。ADO是OLE DB的一個消費者,它提供了對OLE DB數據源應用級的訪問功能。ADO為OLE DB提供了一個易于使用的應用級接口。ADO允許用戶編寫通過OLE DB提供者對數據庫服務器中的數據進行訪問和操作的應用程序。其主要的優點是易于使用、高速度、低內存和占用較少的磁盤空間。ADO和OLE DB的關系如圖2所示:

    3 Oracle中返回記錄集的存儲過程的定義
    在Oracle存儲過程中,通過定義類型為REF CURSOR(游標指針)的傳出參數,可以返回記錄集。OLE DB允許消費者執行帶REF CURSOR類型參數的PL/SQL存儲過程,或者執行返回REF CURSOR的存儲函數。返回記錄集的存儲過程或函數必須定義在程序包里。包是Oracle數據庫的一種對象,它可以將數據類型、存儲過程、函數、變量和常量封裝在一起。包在結構上分為包頭和包體兩部分,這兩部分要分別建立。包頭用來定義可被外部引用的元素;包體定義實際代碼。使用程序包定義返回記錄集的存儲過程時,需要在包頭中預定義自己的REF CURSOR類型。在程序包體中,存儲過程或函數須使用預定義的游標類型。另外,在一個存儲過程或函數中,可以定義多個REF CURSOR類型的參數以返回多個記錄集。
    以下以職工表emp為例,介紹如何定義返回記錄集的Oracle存儲過程,emp表的定義如下:
    CREATE TABLE emp(
    empno NUMBER(4) NOT NULL, --職工編號
    ename VARCHAR2(10), --職工姓名
    hiredate DATE, --雇傭日期
    sal NUMBER(7,2), --工資
    deptno NUMBER(2)); --所屬部門編號
    下面給出返回記錄集的Oracle存儲過程和存儲函數的示例程序包頭和包體,其中存儲過程GetEmpRecords含有兩個REF CURSOR類型的傳出參數,返回兩個記錄集,存儲函數GetDept的返回值類型為REF CURSOR,返回一個記錄集。
    --定義一個名為Employees的程序包頭
    CREATE OR REPLACE PACKAGE Employees AS
    TYPE empcur IS REF CURSOR;
    --empcur為自定義REF CURSOR類型
    --聲明一個存儲過程GetEmpRecords
    PROCEDURE GetEmpRecords(p_cursor OUT empcur,
    q_cursor OUT empcur,
    indeptno IN NUMBER,
    p_errorcode OUT NUMBER);
    --聲明一個存儲函數GetDept
    FUNCTION GetDept(inempno IN NUMBER,
    p_errorcode OUT NUMBER)
    RETURN empcur;
    END Employees; ---程序包頭定義結束
    --定義Employees的程序包體

    【使用OLE DB和ADO調用返回記錄集的Oracle存儲過程】相關文章:

    平衡結果和過程指標01-10

    訴諸“過程”和“建構”的社會世界研究03-26

    內部審計功能和ERP的實施過程03-24

    Oracle數據庫的優化03-18

    挖掘機的選型和使用03-07

    智能網絡存儲方案03-18

    一種新型存儲器件—磁電存儲器03-18

    基于閃存的星載大容量存儲器的研究和實現03-18

    基于PB6和ORACLE8開發“勞動信息管理系統”03-18

    主站蜘蛛池模板: 最新精品国偷自产在线| 无码人妻精品一区二区在线视频| 国产精品香蕉在线观看| 精品国产一区二区三区无码| 久久精品夜色噜噜亚洲A∨| 精品无人区麻豆乱码1区2区| 亚洲高清国产AV拍精品青青草原 | 国产乱子伦精品无码专区| 国产精品99久久99久久久| 亚洲欧美日韩国产精品一区二区| 国产精品国产三级国产a| 国内精品在线视频| 国产伦精品免编号公布| 亚洲精品成人无码中文毛片不卡| 麻豆精品视频在线观看| 国产精品永久免费视频| 久久国产精品久久| 国产精品亚洲A∨天堂不卡| 亚洲国产精品无码久久九九| 国产免费久久精品99久久| 97久人人做人人妻人人玩精品| 国产精品成人不卡在线观看| 久久久精品2019免费观看| 亚洲精品狼友在线播放| 亚洲精品国产va在线观看蜜芽| 精品亚洲欧美中文字幕在线看| 88国产精品无码一区二区三区| 精品视频第一页| 九九热精品在线| 久久精品国产91久久综合麻豆自制| 色久综合网精品一区二区| 亚洲AV永久无码精品一百度影院| 午夜精品一区二区三区在线视| 久久免费国产精品| 久久久人妻精品无码一区| 欧美日韩国产精品| 午夜亚洲av永久无码精品| 自拍偷自拍亚洲精品情侣| 亚洲精品午夜无码电影网| 日韩精品真人荷官无码| 性欧洲精品videos|