mysql存储过程使用技巧有哪些


本文摘自PHP中文网,作者coldplay.xixi,侵删。

mysql存储过程使用技巧有:1、创建带in模式参数的存储过程;2、创建out模式参数的存储过程;3、创建带inout模式参数的存储过程。

mysql存储过程使用技巧有:

定义

一组预先编译好的SQL语句的集合,理解成批处理语句,类似于java中的方法

1、提高代码的重用性

2、简化操作

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

创建语法

1

2

3

4

CREATE PROCEDURE 存储过程名(参数列表)

BEGIN

存储过程体(一组合法的SQL语句)

END

参数列表包含三部分

参数模式 参数名 参数类型

举例:

1

in stuname varchar(20)

参数模式:

  • in:该参数可以作为输入,也就是该参数需要调用方传入值

  • out:该参数可以作为输出,也就是该参数可以作为返回值

  • inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

  • 如果存储过程体仅仅只有一句话,begin end可以省略

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

  • 存储过程的结尾可以使用 delimiter 重新设置

语法:

1

delimiter 结束标记

案例:

1

delimiter $

调用语法

1

CALL 存储过程名(实参列表);

空参列表

插入到admin表中五条记录

1

2

3

4

5

6

7

8

9

SELECT * FROM admin;

DELIMITER $

CREATE PROCEDURE myp1()

BEGIN

INSERT INTO admin(username,`password`)

VALUES('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000');

END $

#调用

CALL myp1()$

创建带in模式参数的存储过程

1

2

3

4

5

6

7

8

9

10

创建存储过程实现 根据女神名,查询对应的男神信息

CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))

BEGIN

SELECT bo.*

FROM boys bo

RIGHT JOIN beauty b ON bo.id = b.boyfriend_id

WHERE b.name=beautyName;

END $

#调用

CALL myp2('柳岩')$

创建存储过程实现,用户是否登录成功

1

2

3

4

5

6

7

8

9

10

11

CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))

BEGIN

DECLARE result INT DEFAULT 0;#声明并初始化

SELECT COUNT(*) INTO result#赋值

FROM admin

WHERE admin.username = username

AND admin.password = PASSWORD;

SELECT IF(result>0,'成功','失败');#使用

END $

#调用

CALL myp3('张飞','8888')$

创建out 模式参数的存储过程

根据输入的女神名,返回对应的男神名

1

2

3

4

5

6

7

8

CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))

BEGIN

SELECT bo.boyname INTO boyname

FROM boys bo

RIGHT JOIN

beauty b ON b.boyfriend_id = bo.id

WHERE b.name=beautyName ;

END $

根据输入的女神名,返回对应的男神名和魅力值

1

2

3

4

5

6

7

8

9

10

11

CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT)

BEGIN

SELECT boys.boyname ,boys.usercp INTO boyname,usercp

FROM boys

RIGHT JOIN

beauty b ON b.boyfriend_id = boys.id

WHERE b.name=beautyName ;

END $

#调用

CALL myp7('小昭',@name,@cp)$

SELECT @name,@cp$

创建带inout模式参数的存储过程

传入a和b两个值,最终a和b都翻倍并返回

1

2

3

4

5

6

7

8

9

10

CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)

BEGIN

SET a=a*2;

SET b=b*2;

END $

#调用

SET @m=10$

SET @n=20$

CALL myp8(@m,@n)$

SELECT @m,@n$

删除存储过程

1

2

3

drop procedure 存储过程名

DROP PROCEDURE p1;

DROP PROCEDURE p2,p3;#×

查看存储过程的信息

1

2

DESC myp2;

SHOW CREATE PROCEDURE  myp2;

以上就是mysql存储过程使用技巧有哪些的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

关于mysql安装方式及配置几种方式的问题小结

navicat怎么创建存储过程

mysql中如何同时查询两个数据库中的数据

mysql修改账号的ip限制条件实例分享

mysql解压缩安装的详细步骤(图文)

mysql怎么查询最近7天的数据

mysql中的建表语句是什么

mysql数据库进行连接的简单示例代码

mysql表中怎么修改字段?

关系数据库系统能够实现的三种基本关系运算

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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