Oracle 函数

  • 函数是可以返回值的命名的 PL/SQL 子程序。
  • 函数的返回值类型也必须是数据库类型。
  • 特点:①:带参数的函数,全是输入参数,即调用函数   ②:返回值匹配数据路类型
CREATE [OR REPLACE] FUNCTION <function name> [(param1, param2)]
RETURN <datatype>  
IS|AS 
    [local declarations]
BEGIN
    Executable Statements;
    RETURN result;
EXCEPTION
    Exception handlers;
END;
-- 示例
CREATE OR REPLACE FUNCTION helloworld RETURN VARCHAR2 IS
BEGIN
     RETURN '朋友,您好';
END;

函数调用方法

-- 使用 PL/SQL 块
DECLARE
   v_empName VARCHAR(100);
BEGIN
   v_empName := helloworld();
   dbms_output.put_line(v_empName);
END;

-- 使用 SQL 语句
SQL> select helloworld() from dual;--有参数
SQL> select helloworldfrom dual;--无参数
SQL> select helloworld as hello from dual;--起别名

习题1:定义函数MAX_EMP_SAL,没有参数,该函数返回所有员工薪水的最大值。

create or replace function fc_emp_sal_max return number as
  v_sal emp.sal%type;
begin
  select max(sal) into v_sal from emp;
  return v_sal;
exception
  when others then
    dbms_output.put_line('查找无效');
end;

select fc_emp_sal_max from dual;

习题2:带参数

create or replace function double_number(v_x number) return number as
begin
  return v_x * 2;
end;
	
select sal,double_number(sal) from emp;

 

习题3:  定义函数MATH_SUM,带两个数值参数,该函数返回两个参数的和。定义好函数后,请用此函数计算员工薪水和佣金的和

create or replace function math_sum(v_x number,v_y number) return number as
begin
  return v_x+v_y;
end;
	
select sal, comm, math_sum(sal, nvl2(comm, comm, 0)) 薪资 from emp;

过程与函数的区别

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值