1. 程式人生 > >ORACLE自定義函式之簡單示例

ORACLE自定義函式之簡單示例

前言:

因工作環境需要,之前使用過的ORACLE語句自我感覺比較low,越來越不能滿足工作需要。再者資料庫自定義函式和資料庫儲存過程以及觸發器是資料庫技能進階的必須邁過去的坎,趁著工作稍微閒的時候,將他們全部拿下。這是第一篇,關於oracle資料庫自定義函式的使用,之後會續oracle儲存過程及觸發器的博文,用來記錄和總結所學的知識點。同時也希望能幫助到您!本文適合入門級人士,不喜勿噴。

------------------------------------------------------------------------------------------------------------------------------------

一、建立資料庫表,用於後面函式使用

create  table TestTable1 (
id varchar2(10),
name varchar2(20),
sale number(6)
)

insert into TestTable1 (id,name,sale) values('1','jack','3000');
insert into TestTable1 (id,name,sale) values('2','rose','4000');
insert into TestTable1 (id,name,sale) values('3','jason','5000');

準備工作完畢;


二、自定義函式,工資少於等於3000的加500

create or replace function changeSales(sales number)
return number
is
toSales number;
begin
if sales <= 3000 then toSales := sales+500;
else  toSales := sales;
end if;
return toSales;
end;

三、呼叫函式changeSales(sales number

select t.* ,changeSales(t.sale) from TestTable1 t;


簡單示例演示完畢!

-------------------------------------------------------------------------------------------------------------------------------

下面繼續演示一個實際業務需要的函式案例!

業務需求介紹,如下圖所示,需要根據WN19的型別去不同的表查詢wn18對應的名字


CREATE OR REPLACE FUNCTION GETDEALNAME(DEALID VARCHAR2,DEALTYPE VARCHAR2)
RETURN VARCHAR2
IS
DEALNAME VARCHAR2(50);
BEGIN
IF DEALTYPE ='X' THEN SELECT SU01 INTO DEALNAME FROM FE_BASE5.SYS_USERS WHERE SU00 = DEALID; END IF;
IF DEALTYPE ='Y' THEN SELECT SR01 INTO DEALNAME FROM FE_BASE5.SYS_ROLE WHERE SR00 = DEALID; END IF;
RETURN DEALNAME;
END;

自定義函式GETDEALNAME編譯後,執行下面的查詢語句。搞定!


所有示例顯示完畢,歡迎大家留言,相互學習!