Oracle|Oracle 自定义函数

函数
函数用于返回特定数据。执行时得找一个变量接收函数的返回值;
语法如下: create or replace function function_name
(
argu1 [mode1] datatype1,
argu2 [mode2] datatype2, ........
)
return datatype
is
begin

end;
执行 var v1 varchar2(100)
exec :v1:=function_name
===============================================================================
不带任何参数
===============================================================================
create or replace function get_user return varchar2 is
Result varchar2(50);
begin
select username into Result from user_users;
return(Result);
end get_user;
执行:
===============================================================================
带in参数的
===============================================================================
create or replace function get_sal(empname in varchar2) return number is
Result number;
begin
select sal into Result from emp where ename=empname;
return(Result);
end get_sal;
执行: SQL> var sal number
SQL> exec :sal:=get_sal('scott');

===============================================================================
带out参数的函数
===============================================================================
create or replace function get_info(e_name varchar2,job out varchar2) return number is
Result number;
begin
select sal,job into Result,job from emp where ename=e_name;
return(Result);
end get_info;

执行: SQL> var job varchar2(20)
SQL> var dname varchar2(20)
SQL> exec :dname:=get_info('SCOTT',:job)
===============================================================================
带in out参数的函数
===============================================================================
create or replace function result(num1 number,num2 in out number) return number is
v_result number(6);
v_remainder number;
begin
v_result :=num1/num2;
v_remainder :=mod(num1,num2);
num2 :=v_remainder;
return(v_result);
Exception
when zero_divide then
raise_application_error(-20000,'不能除0');
end result;
执行: var result1 number;
var result2 number;
exec :result2:=30
exec :result1:=result(100,:result2)

===============================================================================

    推荐阅读