MySQL - 存储过程procedure

1.存储过程

MySQL中的存储过程和SQL Server的存储过程的创建有所区别
在MySQL中,MySQL中默认的语句结束符是分号(;)。而存储过程中的SQL语句也需要使用分号来结束。为了避免冲突,需要首先使用delimiter语句将MySQL的结束符设置为别的字符,例如”//”或者”&&”(语句为”delimiter // “或者”delimiter &&”)。最后在存储过程创建结束之后,需要使用”delimiter ;”将结束符恢复成分号。

1.1 MySQL创建存储过程

CREATE PROCEDURE sp_name ([proc_parameter[,…]])
[characteristic …] routine_body

sp_name是存储过程的名称,不论存储过程有无参数,其后的( )必须有;proc_parameter是存储过程的参数列表;characteristic指定存储过程的特性;routine_body是SQL代码的内容,可以使用BEGIN…END来标志SQL语句的开始与结束。
1)proc_parameter中每个参数由3部分组成,这3部分分别是输入/输出类型、参数名称、参数类型。

[IN | OUT |INOUT] parameter_name type
其中IN表示输入参数;OUT表示输出参数;INOUT表示既可以输入,也可以输出的参数;parameter_name表示参数名称;type表示参数类型。

1.2示例

创建一个名为test1的存储过程:

/**
通过用户提供的输入参数bid,以及price=500的行(之所以加入了price限制条件,是因为如果不加入此条件,请
求回来多条数据,不能赋值给userid,出现错误),然后将结果赋值给userid;然后调用test1()存储过程,之后
输出输出参数@user中的数据
*/
drop procedure if exists test1;
delimiter //
create procedure test1(in bid varchar(20),out userid varchar(20))
begin
select b.user_id from brands b where b.brand_id = bid and price=500 into userid;
end //

delimiter ; 

call  test1('50',@user);
select @user;

2.变量的使用

2.1 定义变量

MySQL中使用declare关键字定义变量。

DECLARE var_name[,…] type [DEFAULT value]

其中DECLARE关键字用来声明变量;参数var_name是变量名称,可以同时定义多个变量,变量定义语句之间用逗号隔开即可;default value是设置变量的默认值,如果没有此语句,默认为NULL。

示例:
定义一个变量bid,类型为varchar(20),默认值为50

declare bid varchar(20) default ‘50’

2.2变量赋值
2.2.1 SET赋值

MySQL中,可以使用SET关键字为变量赋值。

SET var_name = expr [,var_name = expr]…

其中,SET是赋值关键字;var_name是变量名称;expr是赋值表达式。一个SET语句可同时为多个变量赋值,变量的赋值语句之间用逗号隔开即可。

示例:
为变量name赋值lucy

SET name = ‘lucy’

2.2.2 使用select … into语句为变量赋值

SELECT col_name[,…] INTO var_name[,…] FROM table_name WEHRE condition

其中,参数col_name表示查询的字段名称;参数var_name是变量的名称;参数table_name表示表的名称;condition参数指查询条件。

示例:
存储过程的示例中,给出了示例

select b.user_id from brands b where b.brand_id = bid and price=500 into userid;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值