MySQL的存储过程

导读:本篇文章讲解 MySQL的存储过程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

MySQL存储过程

存储过程简介:

1:一组为了完成特定功能的SQL语句集,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

2:存储过程是可编程的函数,在数据库中创建并保存,

3:数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

存储过程思想上很简单,就是对数据库 SQL 语言层面的代码封装与重用

优点:

  • 增强SQL语言的功能和灵活性
  • 标准组件式编程
  • 较快的执行速度

缺点:

  • 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
  • 存储过程的性能调校与撰写,受限于各种数据库系统。

参数:

IN:参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT: 该值可在存储过程内部被改变,并可返回
INOUT: 调用时指定,并且可被改变和返回

创建:

MySQL存储过程的创建:语法:
CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …]
过程体

DELIMITER $
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;
    END$	

测试:

创建一个数据库,并插入数据
CREATE TABLE admin(
	`id` int(16) PRIMARY KEY auto_increment,
	`name` VARCHAR(16),
	`password` VARCHAR(16)
)
INSERT into admin VALUES
(1,'tiechui','123'),
(2,'yaoji','321'),
(3,'qq','123')

1:in 输入参数,根据id查找admin的用户名

delimiter $
CREATE PROCEDURE p2(in id int)
BEGIN
SELECT * FROM admin WHERE admin.id = id;

END$

call p2(1)

在这里插入图片描述

2:传入用户名和密码,判断用户是否注册

delimiter $
CREATE PROCEDURE p3(in aname VARCHAR(16),in pwd VARCHAR(16))
BEGIN
DECLARE c int;
	SELECT count(*) into c 
	FROM admin 
	WHERE `name` = aname AND `password` = pwd;

SELECT if(c>0,'已注册','未注册');
END$
	
call p3('tiechui','123');

在这里插入图片描述
3:根据id返回用户名

delimiter $
CREATE PROCEDURE p4(in aid int, out aname VARCHAR(16))
BEGIN
SELECT `name` into aname FROM admin WHERE id = aid;

END$

call p4(1,@aname);
SELECT @aname

在这里插入图片描述
4:根据id返回用户名和密码;

delimiter $
CREATE PROCEDURE p5(in aid int,out aname VARCHAR(16),out apwd VARCHAR(16))
BEGIN 
	SELECT `name`,`password` into aname,apwd FROM admin WHERE id = aid; 

END$

call p5(1,@aa,@bb);
SELECT @aa,@bb;

在这里插入图片描述
5:创建存储过程,传入两个参数,将他们翻倍

delimiter $
CREATE PROCEDURE p6(INOUT a int,INOUT b int)
BEGIN
	set a = a * 2;
	set b = b * 2;
END$

set @a = 12;
set @b = 34;

call p6(@a,@b);	
SELECT @a,@b;

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/71901.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!