MySQL存储过程学习

DELIMITER 符号
将结束符临时改成 对应符号
DROP PROCEDURE IF EXISTS TEST
如果当前库有该存储过程就删除。
CREATE
/[DEFINER = { user | CURRENT_USER }]/
PROCEDURE test.TEST(IN param INT)
创建名为TEST的存储过程,入参格式为:输入或者输出(IN OR OUT) 参数名 参数类型(INT或者VARCHAR等类型)
接下来正式编写存储过程,以begin开始,end结束。
BEGIN
DECLARE v_name VARCHAR(255); #定义一个VARCHAR类型,名字为v_name的变量
DECLARE done INT DEFAULT FALSE;

DECLARE cur_vernier CURSOR FOR
select somobody from tabel; #创建名为cur_vernier的游标并将该条SQL查询导的结果赋值给游标
#如果到最后一条数据将done改为true
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE ;
OPEN cur_vernier ; #打开游标
FETCH cur_vernier INTO v_name; #取出一条数据,将数据赋值给v_name变量。

注意:查询几个字段就需要几个字段去接收数据,因为我用的是while do 循环,所以我在循环前先取一条数据来走逻辑。

WHILE (NOT done ) DO #固定格式,执行while循环
IF 条件 THEN
set v_name = ‘’; #变量赋值
select name into v_name from t_test; #将查到的SQL结果赋值给v_name变量两种赋值方式,一种查库,一种不查库
select v_name;#执行存储过程的时候打印变量值,一般在调试的时候打印值看数据正确性。
…逻辑体
ELSE
…逻辑体
END IF;

注意:每个IF最后都得有END IF;结尾,同时对于每一句结束的SQL语句都需要有结束符,同时对于字符串拼接不得用+,应该用CONCAT()函数做字符串拼接。

FETCH cur_vernier INTO v_name;#获取下一条数据
END WHILE; #while 循环结束
CLOSEcur_vernier ; #关闭游标
END
DELIMITER; #将存储过程结束符设置回分号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值