包只是作為 程序的一個(gè)載體而已,你要運(yùn)行,當(dāng)然是去調(diào)用它!
我們一直強(qiáng)調(diào)做網(wǎng)站、成都做網(wǎng)站對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)的建站公司不一定是大公司,創(chuàng)新互聯(lián)建站作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。
包里面可以包含函數(shù)、過程等,你可以開發(fā)程序時(shí)候調(diào)用包里面的這些程序!沒有聽說過包怎么運(yùn)行的道理!
就像電視機(jī)(包)可以用來看電視,但是你不去打開它(調(diào)用包),它就沒有作用!
樓下的明顯誤導(dǎo)別人啊,包何來參數(shù)之說?只有包里面的程序才有參數(shù),調(diào)用包里面過程的方法如下:
begin
exec 包名.過程名();
end;
函數(shù)的調(diào)用就不用我寫了吧!
包用于在邏輯上組合過程和函數(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);
exec package.function(xx,xx...);
如果想執(zhí)行整個(gè),在包中編寫一個(gè)調(diào)研所有函數(shù)或存儲(chǔ)的主存儲(chǔ),然后你調(diào)研主存儲(chǔ)就可以了。
oracle提供包功能本身不具備調(diào)研所有函數(shù)或存儲(chǔ)的功能,只是將函數(shù)、存儲(chǔ)、變量以包的形式管理。
包頭
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?;