create?or?replace?function(p_deptno?in?varchar2)
站在用戶的角度思考問題,與客戶深入溝通,找到西鄉(xiāng)塘網(wǎng)站設(shè)計與西鄉(xiāng)塘網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋西鄉(xiāng)塘地區(qū)。
return?number
as
avgsal?number(10,2);
begin
select?avg(sal)?into?avgsal?from?emp?where?deptno?=?p_deptno;
return?avgsal;
end;
create or replace
FUNCTION "函數(shù)名"
(
A in number,
B in number,
name in VARCHAR2
)
BEGIN
insert into 表名 values(A+B,name);
END 函數(shù)名;
//花括號里邊就是需要傳的參數(shù),name如果是固定的可以直接寫死,就不用傳參了
基本概念
存儲過程和存儲函數(shù)相當(dāng)于一個東西。
存儲過程在Oracle里叫procedure。
存儲過程沒有返回值。
存儲函數(shù)在Oracle里叫function。
存儲函數(shù)有返回值。
基本語法
create or replace procedure 名字
--create or replace 意思是創(chuàng)建或者替換
as
--可以在此定義參數(shù)
begin
語句;
end;
例:
create? or? replace ? procedure ? sayhello
as
--說明 相當(dāng)與declare
begin
dbms_output.put_line('Hello World');
end;
基本調(diào)用
begin
-- Call the procedure
sayhello;
sayhello;
sayhello;
end;
帶參數(shù)的存儲過程--查詢某個員工的年收入
create or replace procedure upmoney(testname in test_procedure.name%type)?
as
begin?
update test_procedure t set t.money = t.money + 1000
where t.name = testname;?
end?
upmoney;
特別的地方,參數(shù)要指明是輸入?yún)?shù)還是輸出參數(shù)。
存儲函數(shù)
create or replace function Fupmoney(tname in varchar2) ?? return number
as ? ? --定義月薪參數(shù)
tmoney test_procedure.money%type;
begin
--得到月薪
select t.money
into tmoney
from test_procedure t
where t.name = tname;
dbms_output.put_line(tmoney*12);
return(tmoney*12);
end;
創(chuàng)建一個多輸出參數(shù)的存儲函數(shù)例子
create or replace procedure manyparm(tname in varchar2,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tjob out varchar2,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tmoney out number,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tdept out varchar2)
is
begin
select t.job,t.money,t.dept
? into tjob,tmoney,tdept
? from test_procedure t
? where t.name = tname;
end manyparm;
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;