create or replace
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的徐匯網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
FUNCTION "函數(shù)名"
(
A in number,
B in number,
name in VARCHAR2
)
BEGIN
insert into 表名 values(A+B,name);
END 函數(shù)名;
//花括號(hào)里邊就是需要傳的參數(shù),name如果是固定的可以直接寫死,就不用傳參了
create?or?replace?function?f(d?number)
return?varchar
is
begin
return?substr(d,instr(d,'.')+1);
end?f;
select?f(12.34)?from?dual;
25、包
(1)定義包頭
語(yǔ)法:
CREATE [OR REPLACE] PACKAGE [schame_name.]包名
IS | AS
包描述
包描述:可以是變量、常量及數(shù)據(jù)類型定義和游標(biāo)定義,也可以是存儲(chǔ)過(guò)程、函數(shù)定義和參數(shù)列表返回值類型。
例:
CREATE OR REPLACE PACKAGE employeePackage
AS
--類型定義
Type empRecType is record(
Empno number(4),
Salary number
)
--變量定義
p1 varchar2(20);
type t_departmentNo table is table of dept.deptno%type
index by binary_integer;
--游標(biāo)定義
Cursor order_sal retrurn EmpRecType;
--聘用員工過(guò)程
Procedure HireEmployee(p_EmpNo emp.empno%type);
End employeePackage;
例:
CREATE OR REPLACE PACKAGE scott.pkg_displayproduct
IS
procedure prc_getproductinfo
(
pid scott.product.prodid%type,
pname out scott.product.prodname%type,
ctname out scott.product.CATEGORYID%type,
dscp out scott.product.description%type
);
function fun_getstock
(
pid scott.product.prodid%type
)
return number;
END pkg_displayproduct;
(2)定義包體
語(yǔ)法:
CREATE OR REPLACE PACKAGE BODY [schame_name.]包名
IS | AS
包體描述;
END 包名;
包名:將要?jiǎng)?chuàng)建的包名稱,該名稱可以和包頭所在的包名相同,也可以不同。
包體描述:游標(biāo)、存儲(chǔ)過(guò)程或者函數(shù)的定義
包體是可選的,如果在包頭中沒(méi)有聲明任何存儲(chǔ)過(guò)程或者函數(shù),則包體就不存在,即使在包頭有變量、游標(biāo)或者類型的聲明
(3)引用包中對(duì)象
BEGIN
[schame_name.][包名.]對(duì)象名;
END;
create?or?replace?function?test(p1?in?number,?p2?in?varchar2)
return?varchar2?is
v_out?varchar2(200);
begin
select?flag_name
into?v_out
from?PU_META_PLAT.MD_META_DIM_CODE
where?dim_table_id?=?p1
and?flag_code?in
(SELECT?trim(substr(','?||?p2?||?',',
instr(','?||?p2?||?',',?',',?1,?LEVEL)?+?1,
instr(','?||?p2?||?',',?',',?1,?LEVEL?+?1)?-
instr(','?||?p2?||?',',?',',?1,?LEVEL)?-?1))
FROM?dual
CONNECT?BY?LEVEL?=
(length(','?||?p2?||?',')?-
length(replace(','?||?p2?||?',',?',',?'')))?/?1?-?1));
return?v_out;
exception
when?others?then
return?null;
end;
create or replace package Package_Name is
PROCEDURE Main( errbuf OUT VARCHAR2
,retcode OUT NUMBER
,parameter1 IN varchar2
);
FUNCTION function_name (parameter1 IN NUMBER)
RETURN NUMBER;
end Package_Name;
---------
create or replace package body Package_name is
PROCEDURE MAIN(errbuf OUT VARCHAR2
,retcode OUT NUMBER
,parameter1 IN VARCHAR2
)
IS
BEGIN
............
END MAIN;
FUNCTION function_name (parameter IN NUMBER)
RETURN NUMBER
IS
x_cnt NUMBER:=0;
BEGIN
SELECT count(*)
INTO x_cnt
FROM dual
return(x_cnt);
END function_name;
end Package_name;
;
你最好使用PL/SQL Develop 創(chuàng)建包
下面是一個(gè)函數(shù)的簡(jiǎn)單示例!建議閱讀相關(guān)書籍以便充分理解!畢竟很多細(xì)節(jié)是很難一一描繪的.系統(tǒng)看看書會(huì)比較好!
函數(shù)是有名稱的pl/sql塊
函數(shù)有返回值
在表達(dá)式中調(diào)用函數(shù)
存儲(chǔ)在服務(wù)器端
CREATE OR REPLACE FUNCTION get_sal
(v_id IN emp.empno%TYPE) RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SELECT sal INTO v_salary FROM emp WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
/
驗(yàn)證對(duì)象
select object_name,object_type from user_objects;
查看原程序
select text from user_source;
調(diào)用函數(shù)
select get_sal(7839) from dual;
刪除函數(shù)
DROP FUNCTION get_salary;
新聞名稱:oracle怎么建立函數(shù),oracle函數(shù)怎么寫
鏈接地址:http://www.rwnh.cn/article30/dscoppo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、Google、企業(yè)網(wǎng)站制作、小程序開發(fā)、網(wǎng)站設(shè)計(jì)公司、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)