一、函数
1、有返回值
2、存储在数据库中
3、能够作为表达式的一部分被调用
二、过程与函数的比较
过程 函数
作为一个独立的PL/SQL 语句执行 作为表达式的一部分调用
在规格说明中不包含 RETURN子句 必须在规格说明中包含RETURN子句
可以返回很多值 必须返回单个值
不用包含 RETURN 语句 必须包含至少一条RETURN 语句
总结:
主要用途:作为SQL表达式的一部分,如 select max(id) where dual;
只返回一个值,想要返回多个值,则必须传入多个out模式参数
--1.输出字符串
create or replace function getStr(str varchar)
return varchar
as
begin
return str;
end;
declare
str varchar(20);
begin
println(getStr('abc')); -- abc
select getStr('abc') into str from dual;
println(getStr('abc')); -- 作为表达式的一部分,结果abc
end;
---2. SQL 应用
/*
输入员工编号,查找员工的工资和所在的部门
只能返回一个值,想要获取多值只能指定 out 模式
*/
create or replace function fun_test(empId int,deptName out varchar)
return int
is
v_sal int;
begin
select sal,dname into v_sal,deptName from emp,dept
where emp.deptno=dept.deptno and empno = empId;
return v_sal;
end;
declare
dname varchar(20);
sal int;
begin
sal:=fun_test(7369,dname); --输入员工编号,dname来获取返回的多值
println(sal); --输出工资 :1210
println(dname); --输出部门 :research
end;
--3.常用语句
--显示错误语句 , fun_test为函数名
show errors function fun_test;
--删除函数,
drop function fun_test;