PROCEDURE和 FUNCTION的区别

PROCEDURE和 FUNCTION的区别

返回值

函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有

调用方式

  • FUNCTION默认有1个返回值,可以不返回
  • PROCEDURE是通过通过传入out 参数来传递需要返回的数值,可以有多个或者没有

主要区别

PROCEDUREFUNCTION
用于在数据库中完成特定的操作或者任务(如插入、删除)用于特定的数据(如选择)
声明用procedure声明用function
程序头部声明时不需要描述返回类型程序头部声明要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句
以编译后的形式存放在数据库中以编译后的形式存放在数据库中
可以使用in/out/in out三种模式的参数可以使用in/out/in out三种模式的参数
可以作为一个独立的PL/SQL语句来执行不能独立,执行在 PL/SQL 中必须指定变量接收返回,,必须作为表达式的一部分调用
可以通过out/in out返回零个或者多个值通过return语句返回一个值,且该值要与申明部分一致,也可以是通过out类型的参数带出的变量
SQL语句(DML或SELECT)中不可调用存储过程SQL语句(DML或SELECT)中可以调用函数
  • 都可以使用默认值,都可以使用位置表示法和名称表示法
  • 当需要返回多个值的时候,推荐使用过程;当需要返回一个值的时候,推荐使用函数

示例

PROCEDURE

-- PROCEDURE创建
CREATE  PROCEDURE proctest(in param1 int,out param2 varchar(30))
begin
select name into param2 from testdb where id=param1;
end 
DELIMITER ;
-- PROCEDURE调用
call proctest(3,@a);
select @a;

FUNCTION

-- FUNCTION创建
create function getNhighestSalary(N int) returns int
begin
  set N = N-1;
  return(
  select distinct salary from Employee desc limit N,1
  );
end;
-- FUNCTION调用
select getNhighestSalary(2)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值