exec package.function(xx,xx...);
陵川網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),陵川網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為陵川上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的陵川做網(wǎng)站的公司定做!
如果想執(zhí)行整個(gè),在包中編寫一個(gè)調(diào)研所有函數(shù)或存儲(chǔ)的主存儲(chǔ),然后你調(diào)研主存儲(chǔ)就可以了。
oracle提供包功能本身不具備調(diào)研所有函數(shù)或存儲(chǔ)的功能,只是將函數(shù)、存儲(chǔ)、變量以包的形式管理。
包只是作為 程序的一個(gè)載體而已,你要運(yùn)行,當(dāng)然是去調(diào)用它!
包里面可以包含函數(shù)、過程等,你可以開發(fā)程序時(shí)候調(diào)用包里面的這些程序!沒有聽說過包怎么運(yùn)行的道理!
就像電視機(jī)(包)可以用來看電視,但是你不去打開它(調(diào)用包),它就沒有作用!
樓下的明顯誤導(dǎo)別人啊,包何來參數(shù)之說?只有包里面的程序才有參數(shù),調(diào)用包里面過程的方法如下:
begin
exec 包名.過程名();
end;
函數(shù)的調(diào)用就不用我寫了吧!
包頭
create or replace package package_name is
prcedure p1;
prcedure p2(v1 in char, v2 in date);
end package_name;
包體
create or replace package body package_name is
prcedure p1 is
begin
--代碼省略
end p1;
prcedure p2(v1 in char, v2 in date) is
begin
--代碼省略
end p2;
end package_name;
代碼如下:
CREATE OR REPLACE PACKAGE BODY Interface_PKG AS
PROCEDURE GetTableData(IN_WorkDate IN Date, IO_CURSOR OUT T_CURSOR) IS
V_CURSOR??? T_CURSOR;
BEGIN
OPEN V_CURSOR FOR
select *
from 測(cè)試表
where workdate = IN_WorkDate;
IO_CURSOR := V_CURSOR;
End GetTableData;
END Interface_PKG;
擴(kuò)展資料
PACKAGE分SPEC和body兩部分:
1、SPEC是聲明部分:
CREATE?OR?REPLACE?PACKAGE?FirstPage?is
type?outlist?is?ref?cursor;
Procedure?p_get(?maxrow?in?number,?minrow?in?number,?return_list?out?outlist?);
function?f_get(str?in?varchar2)return?varchar2;
END?FirstPage;
2、BODY是功能實(shí)現(xiàn)部分:
CREATE?OR?REPLACE?package?body?FirstPage?is
Procedure?p_get(?maxrow?in?number,?minrow?in?number,?return_list?out?outlist?)
is?begin?open?return_list?for
select?*?from?(select?a.*,rownum?rnum?from?IPS_WL_INNOLUXPN?a?where?rownum=maxrow)?where?rnum?=minrow;
end?;
如果你使用界面的話,就直接雙擊圖標(biāo),如果使用腳本的話,就從開始程序里打開Oracle plus
,這兩者都要保證你的服務(wù)是否啟動(dòng),一般啟動(dòng)最后兩個(gè)就可以
1.cmd進(jìn)入命令行 lsnrctl start 啟動(dòng)監(jiān)聽服務(wù),看出現(xiàn)什么錯(cuò)誤
如果沒有錯(cuò)誤,察看數(shù)據(jù)庫是否可以正常進(jìn)行連接
2.看下你電腦是不是裝了防火墻 先把防火墻禁止掉去
3.去orant\net80\trace\看看,一般有錯(cuò)都會(huì)在那里產(chǎn)生一個(gè).log文件
包用于在邏輯上組合過程和函數(shù),它由包規(guī)范和包體兩部分組成
1.創(chuàng)建包
--創(chuàng)建一個(gè)包sp_package
create?package?sp_package?is
--聲明該包有一個(gè)過程和函數(shù),(沒有實(shí)現(xiàn))
procedure?update_sal(name?varchar2,newsal?number);
function?annual_nicome(name?varchar2)?return?number;
end;
--創(chuàng)建包體(用于實(shí)現(xiàn)已經(jīng)聲明的函數(shù)和過程)
create?package?body?sp_package?is
procedure?update_sal(name?varchar2,newsal?number)
is
BEGIN
UPDATE?emp
SET????sal?=?newsal
WHERE??ename?=?name;
END;
function?annual_income(name?varchar2)
return?number?is
annual_salary?number;
BEGIN
SELECT?sal?*?12?+?Nvl(comm,0)
INTO???annual_salary
FROM???emp
WHERE??ename?=?name;
RETURN?annual_salary;
END;
end;
--調(diào)用包中的內(nèi)容
exec?sp_package.update_sal('name',number);