MySQL存储过程学习

自定义局部变量

局部变量就是一个存储过程内部定义的一些变量。
如下方式就可以自定义局部变量了。
需要注意的是:局部变量声明一定要放在存储过程体的开始

create PROCEDURE demo06(in p_in int)
BEGIN
DECLARE l_int int UNSIGNED DEFAULT 400;
DECLARE l_numeric FLOAT(8,2) DEFAULT 9.95;
DECLARE l_date date DEFAULT '1999-12-31';  
DECLARE l_datetime datetime DEFAULT '1999-12-31 23:59:59';  
DECLARE l_varchar varchar(255) DEFAULT 'This will not be padded';  
select l_int,l_numeric,l_date,l_datetime,l_varchar;
END

调用存储过程

call demo06(1)

在这里插入图片描述

用户变量

①用户变量名一般以@开头
②滥用用户变量会导致程序难以理解及管理
第一种方式:

select 'hello world' into @x;
select @x;

在这里插入图片描述

第二种方式:

set @y='hello mysql';
select @y

在这里插入图片描述
第三种方式

set @z=1+2+3;
select @z;

在这里插入图片描述

在存储过程中使用用户变量:

create PROCEDURE demo07(in p_in int)
BEGIN
select concat(@y,'hello world');
END

设置用户变量并调用demo07

set @y='hello mysql';
call demo07(1)

在这里插入图片描述
在存储过程之间传递全局范围的用户变量:

CREATE PROCEDURE demo08(in p_in int)
BEGIN
set @last = 'p1';
END

CREATE PROCEDURE demo09(in p_int int)
begin
select concat('last is ',@last);
end

call demo08(1);
call demo09(1);

在这里插入图片描述

注释

MySQL存储过程可使用两种风格的注释
双模杠:–
该风格一般用于单行注释
c风格: 一般用于多行注释

Mysql中存储过程的查询

我们知道一个数据库下面有哪些表,我们一般采用show tables进行查看,那么我们要是查看某个数据库下面的存储过程,是否也可以采用呢?答案是,我们可以查看某个数据库下面的存储过程,但是是另一种方式。
我们可以用

select * from information_schema.ROUTINES where routine_schema='数据库名'

进行查询。
如果我们想知道某个存储过程的详细,那我们又该怎么做呢?是不是也可以像操作表一样用 describ 表名 进行查看呢?
答案是:我们可以查看存储过程的详细,但是需要用另一种方法:

show create procedure 数据库.存储过程名;

就可以查看当前存储过程的详细。

存储过程的修改

alter procedure
更改用CREATE PROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。

存储过程的删除

drop procedure
删除一个存储过程比较简单,和删除表一样:
DROP PROCEDURE
从MySQL的表格中删除一个或多个存储过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值