MySql存储过程

存储过程的定义

在大型在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,
用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

存储过程基本格式

create procedure 过程名()
begin
	SQL语句;
end;

调用存储过程格式

call 过程名();

不带参数的简单存储过程

create procedure p_test()
begin
	select * from actor;
end;
## 调用

call p_test();

 执行结果

在这里插入图片描述

带变量的存储过程

  1. 使用declare来申明变量,变量必须先申明在使用

  2. 变量有数据类型和长度之说

  3. 可以使用set来为变量赋值

  4. 变量需要返回的时候,可以使用select 变量名 来返回变量值

     ## 举个栗子
    
create procedure  p_test_2()
begin
	DECLARE first_name varchar(20);  -- 申明变量first_name,并指定长度
	SET first_name='PENELOPE';  -- 使用set来为变量赋值
	SELECT first_name into first_name from actor limit 1; -- 将查询结果装入变量中
	SELECT first_name;  -- 查看变量值
end;
	 调用及执行结果

在这里插入图片描述

带参数的存储过程

## 基本语法
create procedure p_test_3([in|out|inout] 参数名 参数类型)
begin
	SQL语句;
end;

in:传入参数,如果没有指定,默认是in
out:返回参数
inout:可以是入参也可以是返回值

## 入参——in 
来个例子,根据输入演员id返回演员的last_name
CREATE PROCEDURE p_test_3 (
	IN id int) BEGIN
	DECLARE
		last_name_a VARCHAR ( 20 );
	SELECT
		last_name into last_name_a
	FROM
		actor 
	WHERE
		actor_id = id
		LIMIT 1;
	SELECT
		last_name_a;
	
END;
CALL p_test_3 (1);
## 执行结果:

演员表:
在这里插入图片描述
在这里插入图片描述
返回参数——out

场景:
需要根据输入演员的id,返回演员的firstname

CREATE PROCEDURE p_test_4 (
	IN id INT,
	OUT f_name VARCHAR ( 20 )) 

BEGIN
	SELECT
		first_name INTO f_name
	FROM
		actor 
	WHERE
		actor_id = id;
	
END;
set @uname='';
CALL p_test_4 (3,@uname);
SELECT @uname as first_name;

演员表数据
在这里插入图片描述
执行结果
在这里插入图片描述

存储过程支持同时也支持if else、case when 等语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值