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');

准备工作完毕;

ORACLE自定义函数之简单示例

二、自定义函数,工资少于等于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;

ORACLE自定义函数之简单示例

简单示例演示完毕!

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

下面继续演示一个实际业务需要的函数案例!

业务需求介绍,如下图所示,需要根据WN19的类型去不同的表查询wn18对应的名字

ORACLE自定义函数之简单示例

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编译后,执行下面的查询语句。搞定!

ORACLE自定义函数之简单示例

所有示例显示完毕,欢迎大家留言,相互学习!