MySQL的存储过程

本文详细介绍了MySQL存储过程的概念、优缺点及其创建与使用方法。通过实例展示了如何创建带参数的存储过程,包括IN、OUT和INOUT参数类型,并提供了调用存储过程的示例,如查找用户信息、验证用户注册状态等。此外,还涉及了存储过程的性能考虑和移植性问题。
摘要由CSDN通过智能技术生成

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;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值