久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

使用OLE DB和ADO調(diào)用返回記錄集的Oracle存儲(chǔ)過程

時(shí)間:2024-04-28 22:34:00 計(jì)算機(jī)畢業(yè)論文 我要投稿
  • 相關(guān)推薦

使用OLE DB和ADO調(diào)用返回記錄集的Oracle存儲(chǔ)過程

摘要 OLE DB是建立在ODBC成功基礎(chǔ)上的一種開放規(guī)范,它為訪問和操縱不同類型數(shù)據(jù)提供開放的標(biāo)準(zhǔn)。ADO是OLD DB的一個(gè)消費(fèi)者,它提供了對(duì)OLE DB數(shù)據(jù)源應(yīng)用級(jí)的訪問功能。在應(yīng)用程序中使用OLE DB和ADO,可以高效地調(diào)用返回記錄集的Oracle存儲(chǔ)過程。

關(guān)鍵字 OLE DB ADO 存儲(chǔ)過程 記錄集

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

2.2 ADO對(duì)象模在ADO對(duì)象模型中,Connection、Command和Recordset對(duì)象是三個(gè)主要的對(duì)象。Connection對(duì)象表示對(duì)遠(yuǎn)程數(shù)據(jù)的連接。Connection對(duì)象可與Command對(duì)象或Recordset對(duì)象關(guān)聯(lián)。Command對(duì)象定義了對(duì)數(shù)據(jù)源執(zhí)行的指定命令。Command對(duì)象可以用來執(zhí)行命令和參數(shù)化的SQL語句,可以用于SQL語句和返回記錄集的SQL查詢。Command對(duì)象既可以使用一個(gè)活動(dòng)的Connection對(duì)象,也可以創(chuàng)建它自己到目標(biāo)數(shù)據(jù)源的連接。Command對(duì)象包含一個(gè)Parameters集合,在該集合中每一個(gè)Parameter對(duì)象表示Command對(duì)象使用的參數(shù)。Command對(duì)象執(zhí)行參數(shù)化的SQL語句時(shí),每一個(gè)Parameter對(duì)象表示SQL語句中的一個(gè)參數(shù)。Recordset對(duì)象表示的來自基本表或命令執(zhí)行結(jié)果的記錄全集。Recordset對(duì)象既可以使用一個(gè)活動(dòng)的Connection對(duì)象,也可以創(chuàng)建它自己到目標(biāo)數(shù)據(jù)源的連接。Recordset對(duì)象允許查詢和修改數(shù)據(jù)。每一個(gè)Recordset包含一個(gè)Field對(duì)象集合,其中,每個(gè)Field對(duì)象表示Recordset中一個(gè)數(shù)據(jù)列。
2.3 ADO和OLE DB的關(guān)系
OLE DB是系統(tǒng)級(jí)編程接口,ADO是應(yīng)用軟件級(jí)編程接口。ADO是OLE DB的一個(gè)消費(fèi)者,它提供了對(duì)OLE DB數(shù)據(jù)源應(yīng)用級(jí)的訪問功能。ADO為OLE DB提供了一個(gè)易于使用的應(yīng)用級(jí)接口。ADO允許用戶編寫通過OLE DB提供者對(duì)數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行訪問和操作的應(yīng)用程序。其主要的優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存和占用較少的磁盤空間。ADO和OLE DB的關(guān)系如圖2所示:

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

【使用OLE DB和ADO調(diào)用返回記錄集的Oracle存儲(chǔ)過程】相關(guān)文章:

平衡結(jié)果和過程指標(biāo)01-10

訴諸“過程”和“建構(gòu)”的社會(huì)世界研究03-26

內(nèi)部審計(jì)功能和ERP的實(shí)施過程03-24

Oracle數(shù)據(jù)庫的優(yōu)化03-18

挖掘機(jī)的選型和使用03-07

智能網(wǎng)絡(luò)存儲(chǔ)方案03-18

一種新型存儲(chǔ)器件—磁電存儲(chǔ)器03-18

基于閃存的星載大容量存儲(chǔ)器的研究和實(shí)現(xiàn)03-18

基于PB6和ORACLE8開發(fā)“勞動(dòng)信息管理系統(tǒng)”03-18