MySQL 存储过程

1、MYSQL 存储过程中的关键语法
声明语句结束符,可以自定义

DELIMITER $$
或
DELIMITER //

1、SUM=1+2+3+...+10=55

delimiter $    #将语句的结束符号从分号;临时改为两个$(可以是自定义)
DROP PROCEDURE IF EXISTS addresult;
CREATE PROCEDURE addresult()
BEGIN
       DECLARE i INT;
       DECLARE n INT;
       DECLARE sum INT;
       SET sum=0;
       SET i=1;
       SET n=10;
       WHILE i<=n DO
              SET sum=sum+i;
              SET i=i+1;
       END WHILE;
     SELECT sum;
END$
delimiter ;   #将语句的结束符号恢复为分号
call addresult()

2、查询列值 赋值 变量

delimiter $$     #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
create procedure testA(in p_in int)
BEGIN
    SELECT p_in;
    SET p_in=2;
    SELECT P_in;
    SET @adminId = '';
    SELECT @adminId := id FROM sys_user_info WHERE mobile = 'admin';
END$$
delimiter ;      #将语句的结束符号恢复为分号

set @p_in=1;
call testA(@p_in);

3、删除存储过程

-- ----------------------------
-- Procedure structure for proc_class_attendance_time_delete
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_class_attendance_time_delete`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `proc_class_attendance_time_delete`(in aid VARCHAR(36),in sid VARCHAR(36))
BEGIN
    DELETE FROM trans_class_attendance_time WHERE attendance_time_id = aid AND school_id=sid;
END;;
DELIMITER ;

-- ----------------------------
-- Procedure structure for proc_data_delete
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_data_delete`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `proc_data_delete`(in sid VARCHAR(36))
BEGIN
    DELETE FROM base_grade WHERE school_id=sid;
    DELETE FROM base_class WHERE school_id=sid;
    DELETE FROM sys_user_info WHERE school_id=sid AND (mobile IS NULL OR mobile != 'admin');
    SET @adminId = '';
    SELECT @adminId := id FROM sys_user_info WHERE school_id=sid AND mobile = 'admin';
    DELETE FROM sys_user_role WHERE school_id=sid and user_id != @adminId;
END;;
DELIMITER ;

4
5
6
7
8

你可能感兴趣的:(MySQL)