MySQL存储过程的深入讲解(in、out、inout)


本文整理自网络,侵删。

一、简介

从 5.0 版本才开始支持,是一组为了完成特定功能的SQL语句集合(封装),比传统SQL速度更快、执行效率更高。

存储过程的优点

1、执行一次后,会将生成的二进制代码驻留缓冲区(便于下次执行),提高执行效率

2、SQL语句加上控制语句的集合,灵活性高

3、在服务器端存储,客户端调用时,降低网络负载

4、可多次重复被调用,可随时修改,不影响客户端调用

5、 可完成所有的数据库操作,也可控制数据库的信息访问权限

为什么要用存储过程?

1.减轻网络负载;2.增加安全性

二、创建存储过程

2.1 创建基本过程

使用create procedure语句创建存储过程

存储过程的主体部分,被称为过程体;以begin开始,以end$$结束

#声明语句结束符,可以自定义:
delimiter $$
#声明存储过程
create procedure 存储过程名(in 参数名 参数类型)
begin
#定义变量
declare 变量名 变量类型
#变量赋值
set 变量名 = 值
 sql 语句1;
 sql 语句2;
 ...
end$$
#恢复为原来的语句结束符
delimiter ;(有空格)

实例:

mysql> delimiter $$
mysql> create procedure text()
 -> begin
 -> select * from stu.a_player;
 -> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

调用存储过程

call 存储过程名(实际参数);
mysql> call text;
+----+----------+-------+
| id | name  | score |
+----+----------+-------+
| 1 | zhangsan | 88 |
| 2 | lisi  | 89 |
| 3 | wangwu | 67 |
| 4 | zhaoliu | 90 |
| 5 | xuli  | 80 |
| 6 | keke  | 75 |
+----+----------+-------+
6 rows in set (0.00 sec)

删除存储过程

mysql> drop procedure text;

2.2 存储过程的参数

MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:

CREATEPROCEDURE 存储过程名([[IN |OUT |INOUT ] 参数名 数据类形...])

IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)

OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)

INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

传递参数实例:

阅读剩余部分

相关阅读 >>

navicat for mysql怎么监控服务器

mysql如何输出汉字信息

如何查看mysql是几位的

用c语言操作mysql数据库的通用方法

mysql登录报错提示error 1045 (28000)错误的解决方法(图文)

mysql怎么创建密码错误

详解mysql中union的用法

mysql字符串字段如何按照逗号截取进行储存

浅谈mysql清空表数据的两种方式和区别

mysql中的if和case语句的使用

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...