【3】Oracle_存储函数

前端之家收集整理的这篇文章主要介绍了【3】Oracle_存储函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、语法

createorreplacefunction函数(参数1in|out类型,参数2in|out类型)retrun结果类型
as|is
--定义变量
begin
return变量;--(变量的类型一定是跟return的结果类型保持一致)
end;

2、应用

(1)声明fun_emp_totalsal存储函数查询指定员工的年薪
create or replace functionfun_emp_totalsal(eno number) return number
as
psal number;
begin
select sal*12+nvl(comm,0) into psal from emp where empno = eno;
return psal;
end;

调用
declare
totalSal number;
begin
totalSal :=fun_emp_totalsal(7788);
dbms_output.put_line(totalSal);
end;
运行:
(2)声明pro_emp_totalsal存储过程,查询指定员工的年薪
createorreplaceprocedurepro_emp_totalsal(enonumber,totalsaloutnumber)
as
begin
selectsal*12+nvl(comm,0)intototalsalfromempwhereempno=eno;
end;

调用和运行和上面的存储函数一样。

(3)声明fun_emp_dname存储函数,根据部门编号查询出部门名称
@H_502_185@createorreplacefunctionfun_emp_dname(dnonumber)returndept.dname%type
@H_502_185@as
@H_502_185@ pnamedept.dname%type;
@H_502_185@begin
selectdnameintopname fromdeptwheredeptno=dno;
returnpname;
@H_502_185@end;

调用--查询编号为10的部门名称
@H_502_185@declare
@H_502_185@pnamedept.dname%type;
@H_502_185@begin
@H_502_185@pname:=fun_emp_dname(10);
@H_502_185@dbms_output.put_line(pname);
;


(4)在select语句中调用存储函数
selectempno,ename,fun_emp_dname(deptno)fromemp;

3、存储过程和存储函数的区别:

  • 语法不一样
  • 存储函数必须有返回值
  • 存储过程虽然没有返回值,但是可以指定输出参数类型
  • 存储函数可以在select中使用
原文链接:https://www.f2er.com/oracle/211606.html

猜你在找的Oracle相关文章