mysql procedure 和 delimiter的简单明了的解释

将近完美的存储过程 不接受吐槽。

在最下面讲解一下 delimiter // 作用是什么?????


drop procedure if exists indicator_pro;
delimiter //
CREATE PROCEDURE indicator_pro()
BEGIN
    -- 创建接收游标数据的变量
    declare i int(11);
    declare gradeId int(11);
    declare n varchar(200);
		declare privilegeId int(11);
    -- 创建结束标志变量
    declare done int default false;
    -- 创建游标
    declare cur cursor for select id,`name`,gid from indicator;
    -- 指定游标循环结束时的返回值
    declare continue HANDLER for not found set done = true;
    -- 打开游标
    open cur;
    -- 开始循环游标里的数据
    read_loop:loop
    -- 根据游标当前指向的一条数据
    fetch cur into i,n,gradeId;
    -- 判断游标的循环是否结束
    if done then
        leave read_loop;    -- 跳出游标循环
    end if;
    -- 获取一条数据这里可以做任意你想做的操作,
		
		set n=concat(n,'特权');
    -- 特权id
-- 		INSERT INTO `privilege`(`name`, `picture_id_light`, `picture_id_dark`, `upatetime`, `type`) VALUES (n, NULL, NULL, SYSDATE(), 4);
		set privilegeId= (SELECT id FROM privilege ORDER BY id DESC LIMIT 1);
		-- 指标关联特权
-- 		INSERT INTO `invoice_privilege`(`invoice_id`, `p_id`) VALUES (i, privilegeId);
		-- 等级关联特权
-- 		INSERT INTO `grade_privilege`(`g_id`, `p_id`, `updatetime`) VALUES (gradeId, privilegeId, SYSDATE());
		SELECT i,n,gradeId,privilegeId;
		
		
    -- 结束游标循环
    end loop;
    -- 关闭游标
    close cur;
END//
delimiter ;
-- 调用存储过程
call indicator_pro();
drop procedure if exists indicator_pro;

 

-----------------------------------------------------纯手工摁的分割线---------------------------------------------------------------------------------------

delimiter是指定mysql的语句结尾符比如我们写一个sql语句会用 ";" 号结束当前语句 (默认就是;号)

1就是以;号结尾  2就是重新自定义了一下结尾符

 

 

1是用到结尾符的地方 2又给还原了回去。。。

完了 就这些 看到代码有问题的可以指点一二三   不接受吐槽。

 

end
end

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值