SQL基础——存储过程

存储过程

一组预先编译好的SQL语句的集合,理解成批处理语句。用户可通过指定存储过程的名字并给定参数来调用执行

作用:

1、封装,提高代码的重用性,简化操作

2、统一接口,确保数据的安全

3、减少编译次数并减少了和数据库服务器的连接次数,提高了效率

(1)创建存储过程:

存储过程就是具有名字的一段代码,用来完成一个特定的功能。

创建的存储过程保存在数据库的数据字典中

CREATE PROCEDURE 存储过程名([proc_parameter][,...]) [characteristic...] 
BEGIN
	存储过程体(一组合法的SQL语句)
END

例如:

DELIMITER $$   # #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
CREATE PROCEDURE delete_girl (IN girl_name CHAR(20))
BEGIN
	DELETE FROM girls
	WHERE girl_name=NAME;
END$$
DELIMITER ;  #将语句的结束符号恢复为分号

CALL delete_girl("jennie");  # 调用

说明:

1.默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀;

2.在定义过程时,使用DELIMITER 命 令 将 语 句 的 结 束 符 号 从 分 号 ; 临 时 改 为 两 个 命令将语句的结束符号从分号 ; 临时改为两个 ;,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。

3.如果存储过程是一句话,begin end可以省略。

4.存储过程体中的每条sql语句的结尾要求必须加分号

存储过程参数proc_parameter:

in/out/inout param_name type
参数模式 参数名 参数类型

in: 作为输入,需要调用方传入值(传入值可以是字面量或变量)

out: 作为输出,可以作为返回值(可以多个返回值,传出值只能是变量)

inout: 既可以作输入也可以作输出, 也就是改参数既需要传入值,又可以返回值(值只能是变量)

例如:

参考:https://www.cnblogs.com/geaozhang/p/6797357.html

(2)调用存储过程:

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

(3)修改存储过程:

alter procedure 存储过程名 [charactristic…]

(4)删除存储过程:

drop procedure [if exits] 存储过程名

(5)查看存储过程:

  • 查看存储过程的状态:

    show procedure status like 函数名

  • 查看存储过程的定义:

    show create procedure 函数名

  • 通过查看information_schema.routines了解存储过程的信息

    select * from routines where rounies_name=存储过程名

猜你喜欢

转载自blog.csdn.net/weixin_45455015/article/details/109302663
今日推荐