oracle-函数

函数用于返回特定的数据,当建立函数时,在函数头部必须包含return子句。而在函数体内必须包含return语句返回的数据。可以将经常需要进行的计算写成函数.函数的调用是表达式的一部分,而过程的调用是一条PL/SQL语句.
[b]语法:[/b]

create [or replace] function fun_name ([para_name [in | out | in out) type, [para_name [in | out | in out) type[, ….]])
return type
is | as
声明部分
Begin
执行部分
end fun_name;

说明:
命名规范:fun_myname
参数声明:参数名,输入输出属性,数据类型。
create or replace 函数已经存在,就replace。
return type 声明返回数据类型。
无异常部分

--输入雇员的姓名,返回该雇员的年薪
create function annual_incomec(name varchar2)   
return number is
annual_salazy number(7,2);
begin
--执行部分
select sal*12+nvl(comm, 0) into annual_salazy from emp where ename=name;
return annual_salazy;
end;


如果函数创建过程有编译错误,可以使用show error;
调用:
1.在sqlplus中调用函数

var income number
call annual_incomec('scott') into: income;
print income
var income number
call annual_incomec('scott') into: income;
print income


declare
n number(10);
begin
n:= annual_incomec('scott');


----1. 位置表示法调用函数
  BEGIN
  dbms_output.put_line(add_three_numbers(2,4,5));
  END;
  ----2. 命名表示法调用函数
  BEGIN
  dbms_output.put_line(add_three_numbers(b=>3, a=>4,c=>2));
  END;
  ----3. 混合使用位置表示法和命名表示法调用函数
  BEGIN
  dbms_output.put_line(add_three_numbers(3, b=>4,c=>2));
  END; 
----4. 排除表示法
  BEGIN
  dbms_output.put_line(add_three_numbers(12,c=>2));
  END;
2.同样我们可以在sql中调用该函数
select annual_income('SCOTT') from dual;
这样可以通过rs.getInt(1)得到返回的结果。
查看 select text from user_source where name = 'GET_SALARY_BY_DEPTNO' (函数名大写)
删除 drop function get_salary_by_deptno;

[b]函数和过程比较:[/b]
从语法角度:函数需要返回类型,并且执行代码中必须有return语句,
与过程相比,函数无异常处理部分,
从使用角度,函数注重数学运算,同时也注重运算结果。使用是一般要用某个变量接受函数返回值,过程是通过具有输出属性的参数,向外面传数据。
如果是PROCEDURE的话我在SQL/PLUS中可以通过EXECUTE就可以执行该PROCEDURE来查看该运行的结果,
如果是FUNCTINON的话是SELECT FUNCHTION NAME FROM DUAL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值