Oracle--plsql函数
函数
函数的参数都是in 输入参数,return是输出
语法:
create [or replace] function 函数名 (参数1 类型1, 参数2 类型2,....) return 返回值类型 is/as [定义变量] begin --执行语句 return 结果; [exception --异常的处理 ] End;
***1.函数的参数只能是in模式,可以省略in
2.函数声明的时候,必须使用return 加返回值类型,
注意,return的返回值类型只需要告诉类型,不需要定义长度,例如: return varchar2;
变量:数据类型 varchar2(30)
3.函数的结果必须通过return返回出去,也就是说,在begin中使用return 结果;
无参函数:
--编写一个函数, 返回一个helloworld --保存在数据库, 先编译, 再执行 create or replace function sayHello return varchar2 is --变量声明, .... begin --逻辑代码 --使用return 返回结果 return 'hello world'; end; --oracle 的函数: to_char() to_date() --函数的调用: 在sql语句中调用 select sayHello() from dual;
有参函数:
--根据员工的编号, 计算员工的年收入 (工资+ 奖金)*12 create or replace function getYealSal(eno emp.empno%type) return number is v_sal emp.sal%type; v_comm emp.comm%type; begin select sal,comm into v_sal,v_comm from emp where empno = eno; if v_comm is null then return v_sal * 12; else return (v_sal+v_comm) * 12; end if; end; --调用 select e.*, getYealSal(e.empno) 年收入 from emp e;
存储过程与函数的区别
1) 关键字不一样: 存储过程: procedure, 函数: function 2) 存储过程中参数可以有 in 输入参数, out 输出参数, 函数中参数全部是 in 输入参数 3) 存储过程没有确定返回值类型, 但是可以使用out参数返回结果, 函数 需要确定返回值类型, 使用return 返回结果 4) 存储过程在pl/sql块,或者exec 调用, 而函数,只能在sql语句中调用