存储过程和函数

Posted akiz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程和函数相关的知识,希望对你有一定的参考价值。

存储过程

含义:一组经过预先编译的sql语句的集合
好处:

1、提高重用性
2、sql语句简单
3、减少了和数据库服务器连接的次数,提高了效率

分类:

1、无返回无参
2、仅仅带in类型,无返回有参
3、仅仅带out类型,有返回无参
4、既带in又带out,有返回有参
5、带inout,有返回有参
注意:in、out、inout都可以在一个存储过程中带多个

创建

语法:

create procedure 存储过程名(in|out|inout 参数名  参数类型,...)
begin
    存储过程体
end

注意

1.参数模式:in、out、inout,其中in可以省略
2.存储过程体的每一条sql语句都需要用分号结尾

1、需要设置新的结束标记
    delimiter 新的结束标记
示例:
delimiter $

CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名  参数类型,...)
BEGIN
    sql语句1;
    sql语句2;

END $

2、存储过程体中可以有多条sql语句,如果仅仅一条sql语句,则可以省略begin end

3、参数前面的符号的意思
in:该参数只能作为输入 (该参数不能做返回值)
out:该参数只能作为输出(该参数只能做返回值)
inout:既能做输入又能做输出

调用

call 存储过程名(实参列表)

举例:
调用in模式的参数:call sp1(‘值’);
调用out模式的参数:set @name; call sp1(@name);select @name;
调用inout模式的参数:set @name=值; call sp1(@name); select @name;

查看

show create procedure 存储过程名;

删除

drop procedure 存储过程名;

函数

创建

学过的函数:LENGTH、SUBSTR、CONCAT等
语法:

CREATE FUNCTION 函数名(参数名 参数类型,...) RETURNS 返回类型
BEGIN
    函数体

END

调用

select 函数名(实参列表);

查看

show create function 函数名;

删除

drop function 函数名;

函数和存储过程的区别

关键字 调用语法 返回值 应用场景
函数 FUNCTION SELECT 函数() 只能是一个 一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个
存储过程 PROCEDURE CALL 存储过程() 可以有0个或多个 一般用于更新

以上是关于存储过程和函数的主要内容,如果未能解决你的问题,请参考以下文章

存储过程和函数

存储过程和函数

mysql 存储过程与存储函数

MySQL数据库之存储过程与存储函数

12.Mysql存储过程和函数

SQL函数和存储过程的区别