创建函数:
语法:
create [or replace] function 函数名 [(参数名1 [in/out/inout] 参数类型 ,...)]
return 返回值的类型
as/is
变量声明部分
begin
业务逻辑处理部分
return 变量/常量;
-- 按位置传递参数
call pro_sum_test(1,2,3);
-- 按名称的方式传递参数
call pro_sum_test(v_num2=>2,v_num1=>1,v_num3=>3);
-- 按名称的方式传递参数
call pro_sum_test(v_num2=>2,v_num1=>1,v_num3=>3);
-- 混合传递参数 必须先按位置 再按名称传递
call pro_sum_test(1,v_num3=>3,v_num2=>2);
-- 不能先按名称 再按位置传递
call pro_sum_test(v_num2=>2,v_num1=>1,3);exception
异常处理部分
end;
注意:同形参类型一样,返回值类型也不能有精度
函数和过程的语法差不多,什么时候使用过程, 什么时候使用函数?所有能用函数实现的功能都能用过程来实现。在真正的开发中,一般如果只需要一个返回值 你最好使用函数来定义,如果需要多个返回值 最好使用过程来定义。
举例:创建一个函数,返回0到10之间的一个随机整数
create or replace function fun_random return number is -- 声明随机数变量 v_num number(5); begin --获取0到10之间的一个随机数 v_num:=trunc(dbms_random.value(0,10)); return v_num; end;
调用函数一般使用匿名块:
--通过匿名块调用函数 declare -- 声明变量接收函数的返回值 v_num number(5); begin -- 调用函数 v_num:=fun_random(); --打印结果 dbms_output.put_line('随机数:'||v_num); end;