oracle取对象函数,oracle数据库对象-函数

函数的作用是计算一个功能,往往是用来计算并返回一个计算结果。

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

1)函数和过程比较类似,不同的是函数必须返回一个值,而过程仅是为了执行一系列的操作。

2)在调用的时候,函数可以作为表达式的一部分进行调用,并且可以使用在SELECT中。而过程只能作为一个PL/SQL语句进行调用,且不能在SELECT语句中使用。

3)函数的语法结构和过程比较类似,除了函数使用FUNCTION进行定义之外。外一个重要的特点就是,函数具有RETURN子句,指定函数的返回类型。

4)函数和存储过程都可以使用out参数来返回内容。

2、基本语法:

CREATE [OR REPLACE] FUNCTION function_name

[(parameter_name [IN | OUT | IN OUT] TYPE[,....])]

RETURN TYPE

{IS | AS}

BEGIN

FUNCTION BODY

END function_name;

例子:计算税率

--/

CREATE OR REPLACE FUNCTION sal_tax

(v_sal number)

return number

is

begin

if (v_sal < 2000) then

return 0.10;

elsif (v_sal < 2750) then

return 0.15;

else

return 0.20;

end if;

end;

/

调用:

select sal_tax(2000) from dual;

例子2:

--/

CREATE OR REPLACE FUNCTION get_emp_name (v_no in NUMBER)

RETURN VARCHAR2

IS

v_tmp emp%rowtype;

BEGIN

select * into v_tmp from emp where empno = v_no;

return v_tmp.ename;

END;

/

调用:

select get_emp_name(7839) from dual;

3、参数传递方式

在调用子程序的时候,可以有两种向子程序中传递实际参数的方式:

一种是我们在之前使用的位置传递,还有一种就是名称传递。二者的混合使用我们称作混合传递。

大部分情况下我们使用的都是位置传递方式,只要传输的实际参数的位置匹配形式参数的位置定义即可:

COMPARE(V_N1, V_N2, V_COMPARE);

还可以使用名称传递的方式,这种方法也称作关联的操作符,把左边的实参和右边的形参关联起来:

COMPARE(N1 => V_N1, N2 => V_N2, N3 => V_COMPARE);

混合/组合传递:

COMPARE(V_N1, N3 => V_COMPARE, N2 => V_N2);

4、函数小结

--函数必须要有return返回值

--函数的参数是可选的,如果参数不存在,不要加()

--函数中一般不会用dbms_output.put_line打印信息,因为函数是用来计算并返回一个计算结果的,当然加了打印也没关系

例子:

--/

CREATE OR REPLACE FUNCTION hello RETURN VARCHAR2 IS

var VARCHAR2(40) := 'hello function';

BEGIN

--dbms_output.put_line('aaaaaaaaaaa');

return var;

END;

/

select hello() from dual;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值