1、存储函数概述
2、创建存储函数
语法
CREATE [OR REPLACE] FUNCTION <过程名>[(参数列表)] RETURN 数据类型 IS
[局部变量声明]
BEGIN
可执行语句
EXCEPTION
异常处理语句
END [<过程名>];
实例
create or replace function f_1(n number) return number is
r emp%rowtype;
BEGIN
dbms_output.put_line('姓名 薪水');
select * into r from emp where empno=n;
dbms_output.put_line(r.ename||' '||r.sal); --输出结果,需要 set serverout on 才能显示.
return r.sal;
END;
3、使用函数
declare
n number;
m number;
begin
n:=&请输入员工号;
m:=f_1(n);
dbms_output.put_line('m的值为 '||m);
end;
4、删除函数
- 语法:DROP FUNCTION <函数名>;
- 实例:drop function f_1;
5、参数in和out区别
- 凡是涉及到into查询语句赋值或者:=赋值操作的参数,都必须使用out来修饰。
6、存储过程和存储函数区别
6.1、语法区别
- 关键字不一样,存储函数比存储过程多了两个return。
6.2、本质区别
- 存储函数有返回值,而存储过程没有返回值。
- 存储过程想实现有返回值的业务,就必须使用out类型的参数。
- 可以使用存储函数有返回值的特性,来自定义函数;而存储过程不能用来自定义函数。