java存储过程和函数的区别_存储过程和存储函数

1. 存储过程

1.1 定义

是一组预编译的sql语句,也就是给pl/sql语句包装起来,完成一次创建任意调用的功能,相当于java中的方法。经编译之后存储在数据库中,用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数的话)来执行它。

1.2 语法

create [or replace] procedure 存储过程名(参数名1 in/out 参数类型1,参数名2 in/out 参数类型2)

is/as

——声明部分

begin

——业务逻辑部分

end;

举个栗子:给指定员工涨薪,并打印涨薪前和涨薪后的工资。

create or replace procedure proc_updatesal(vempno in number,vnum in number)

is

--声明变量.记录当前工资

vsal number;

begin

--查询当前的工资

select sal into vsal from emp where empno = vempno;

--输出涨薪前的工资

dbms_output.put_line('涨薪前:'||vsal);

--更新工资

update emp set sal = vsal + vnum where empno = vempno;

--输出涨薪后的工资

dbms_output.put_line('涨薪后:'||(vsal+vnum));

--提交

commit;

end;

2. 存储函数

2.1 定义

通常存储函数是给存储过程调用的。

2.2 语法

create [or replace] function存储函数名(参数名1 in/out 参数类型1,参数名2 in/out 参数类型2) return 返回类型

is/as

——声明部分(声明结果变量)

begin

——业务逻辑部分

return (结果变量);

end;

举个栗子:查询指定员工的年薪。

create or replace function func_getsal(vempno number) return number

is

--声明变量.保存年薪

vtotalsal number;

begin

select sal*12 + nvl(comm,0) into vtotalsal from emp where empno = vempno;

return vtotalsal;

end;

3. 存储过程和存储函数的区别

1.存储函数可以有返回值也可以没有返回值,存储函数不许有返回值

2.存储过程和存储函数都可以通过输出参数out实现多个返回值

怎么选择?

原则上只有一个返回值用存储函数,否则用存储过程

但是我们一般都是用存储过程,因为

1.存储过程可以有返回值也可以没有返回值,存储的灵活性

2.存储过程既然有返回值了,可以替代存储函数

3.oracle新版中已经不推荐使用存储函数了

java中通过CallableStatement调用存储过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值