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;
基本概念
存儲過程和存儲函數相當于一個東西。
存儲過程在Oracle里叫procedure。
存儲過程沒有返回值。
存儲函數在Oracle里叫function。
存儲函數有返回值。
基本語法
create or replace procedure 名字
--create or replace 意思是創建或者替換
as
--可以在此定義參數
begin
語句;
end;
例:
create? or? replace ? procedure ? sayhello
as
--說明 相當與declare
begin
dbms_output.put_line('Hello World');
end;
基本調用
begin
-- Call the procedure
sayhello;
sayhello;
sayhello;
end;
帶參數的存儲過程--查詢某個員工的年收入
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;
特別的地方,參數要指明是輸入參數還是輸出參數。
存儲函數
create or replace function Fupmoney(tname in varchar2) ?? return number
as ? ? --定義月薪參數
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;
創建一個多輸出參數的存儲函數例子
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 fu_pr02 return varchar2 as ----創建函數fu_pr02
2 number is yearsal number(7,2);---定義自變量yearsal
3 begin
4 select sal*12+nvl(comm,0)*12 into yearsal from emp where ename='WARD';--查詢用戶名叫wade的年薪并賦值給yearsal
5 return yearsal;
6 end;
create or replace
FUNCTION "函數名"
(
A in number,
B in number,
name in VARCHAR2
)
BEGIN
insert into 表名 values(A+B,name);
END 函數名;
//花括號里邊就是需要傳的參數,name如果是固定的可以直接寫死,就不用傳參了
新聞標題:oracle函數如何創建 oracle的函數怎么寫
網頁URL:http://vcdvsql.cn/article42/hejhhc.html
成都網站建設公司_創新互聯,為您提供網站建設、動態網站、網站制作、標簽優化、關鍵詞優化、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯