ORACLE - 自定义函数

ORACLE  自定义函数

语法结构:

CREATE [OR REPLACE] FUNCTION 函数名 
(
   参数1 model 类型1 [DEFAULT xx],
   参数2 model 类型2 [DEFAULT xx],
   参数3 model 类型3 [DEFAULT xx]
)
RETURN 返回类型
[DETERMINISTIC]
IS/AS
--声明部分 
BEGIN
  --PL/SQL程序块
END [函数名]

model 参数模式有3种 

  •    IN: 只读模式, 在函数中, 参数的值只能被引用, 不能被改变; 
  •    OUT: 为只写模式, 只能被赋值, 不能被引用;
  •    IN OUT:  可读可写;

DETERMINISTIC: 确定性函数 函数的入参不变,则其返回结果也是一定的 , Oracle11g开始会对其参数及其返回结果进行缓存处理以提升性能。

注意: 定义的出入参不能 与 函数内部使用表字段相同,会造成冲突!

计算例子:

CREATE OR REPLACE FUNCTION full_calculator(ctype IN VARCHAR2, num1 IN NUMBER, num2 IN NUMBER) RETURN NUMBER DETERMINISTIC IS
res_num NUMBER :=0;
BEGIN
  if ctype = '+' then
    select (num1+num2) into res_num from dual;
  elsif ctype = '-' then
    select (num1-num2) into res_num from dual;
  elsif ctype = '*' then
    select (num1*num2) into res_num from dual;
  elsif ctype = '/' and num2 <> 0 then
    select (num1/num2) into res_num from dual;
  else
     RETURN NULL; 
  end if;
  RETURN res_num;
EXCEPTION
  WHEN OTHERS THEN
    RETURN NULL;  
END full_calculator;
   

-- 测试
select full_calculator('+',4,2) from dual;
发布了73 篇原创文章 · 获赞 78 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/SHIYUN123zw/article/details/98199973
今日推荐