Oracle自定义函数

在Oracle数据库中,为了实现特定的功能,可以自定义函数,就像C/C++语言,除了系统的库函数,程序员还会编写很多自定义的函数。

创建函数

语法格式:

create or replace function 函数名(参数1 模式 数据类型,......) return 数据类型
as
  -- 定义局部变量。
  变量1 数据类型;
  ......
begin
  -- 实现函数功能的PL/SQL代码。
  ......
  exception
  -- 异常处理的PL/SQL代码。
  ......
end;
  1. 参数的模式有三种:
    • in:只读模式,在函数中,参数只能被引用/读取,不能改变它的值。
    • out:只写模式,参数只能被赋值,不能被引用/读取。
    • in out:可读可写。
      参数的模式可以不写,缺省为in,out和in out两种模式极少使用。
  2. as/is二选一,在这里没有区别。
  3. 可以不定义局部变量。
  4. 可以没有异常(exception)处理代码段。

如下是一个示例:

function JudgeExist(p_budgetid in varchar2) return number 
is
    v_count number(2);
begin
    select count(1)
    into v_count
    from  project_budget
    where budgetid = p_budgetid
    and isdel = 0;

    return v_count;
end;

删除函数:

drop function 函数名;

自定义函数示例

判断是否是数值

create or replace function isNumber(p varchar2) -- 入参:变量名 字段类型
return number is -- 表示返回值只number, 这里的is表示函数的开始, 也可以替换为as
result number; -- 定义函数用到的变量, 如果定义的是varchar2, 建议加上长度varchar2(1000)
begin  -- 函数开始
	result:=to_number(p); -- 调用oracle的内置函数to_number, 并赋值给result变量
	return 1;
exception  -- 捕获异常
	when VALUE_ERROR then -- 当异常失败了, 返回0 
	return 0;
end isNumber;  -- 函数结束
posted @ 2023-08-02 09:01  残城碎梦  阅读(657)  评论(0)    收藏  举报