調(diào)用Oracle存儲(chǔ)過(guò)程的兩大步驟
以下的文章主要是對(duì)Oracle存儲(chǔ)過(guò)程的相關(guān)內(nèi)容的描述,其實(shí)調(diào)用存儲(chǔ)過(guò)程就是由流控制與SQL語(yǔ)句的相關(guān)書(shū)寫的過(guò)程,這個(gè)過(guò)程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,F(xiàn)ienReport使用時(shí)只要調(diào)用即可。
下面以一個(gè)具體的實(shí)例來(lái)學(xué)習(xí)如何使用FineReport調(diào)用Oracle存儲(chǔ)過(guò)程的。
***步,Oracel定義存儲(chǔ)過(guò)程。
StScroe是Oracele數(shù)據(jù)庫(kù)中的張表,其中記錄了學(xué)生的成績(jī)信息,表結(jié)構(gòu)如下:
定義返回列表的存儲(chǔ)過(guò)程——由于Oracle存儲(chǔ)過(guò)程沒(méi)有返回值,它的所有返回值都是通過(guò)out參數(shù)來(lái)替代的,列表同樣也不例外,但由于是集合,所以不能用一般的參數(shù),必須要用pagkage了,所以定義存儲(chǔ)過(guò)程要分兩部分:
建立一個(gè)程序包,如下:
- CREATE OR REPLACE PACKAGE TESTPACKAGE AS
- TYPE Test_CURSOR IS REF CURSOR;
- END TESTPACKAGE;
建立存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程為:
- CREATE OR REPLACE PROCEDURE p_STSCORE
(Class in varchar2,p_CURSOR out TESTPACKAGE.Test_CURSOR) IS- BEGIN
- OPEN p_CURSOR FOR SELECT * FROM FR.STSCORE where STSCORE.ClassNo=Class;
- END p_STSCORE;
第二步,調(diào)用存儲(chǔ)過(guò)程。
啟動(dòng)FineReport設(shè)計(jì)器,右擊數(shù)據(jù)源面板,選擇私有數(shù)據(jù)源,彈出私有數(shù)據(jù)源對(duì)話框。
點(diǎn)擊增加按鈕,新建一個(gè)私有數(shù)據(jù)源,名為ds1,數(shù)據(jù)庫(kù)選擇為Oracle數(shù)據(jù)源,查詢類型為存儲(chǔ)過(guò)程,在sql文本框中寫如下語(yǔ)句調(diào)用存儲(chǔ)過(guò)程:
- {call fr.p_stscore('[?Class|Class1?]',?)}
3. 點(diǎn)擊預(yù)覽按鈕,可以預(yù)覽查詢到的數(shù)據(jù),如下所示:
至此,F(xiàn)ineReport設(shè)計(jì)器成功調(diào)用Oracle存儲(chǔ)過(guò)程,您可以根據(jù)報(bào)表需求隨心所欲地設(shè)計(jì)報(bào)表樣式了。
【編輯推薦】