数据库中的控制语句

来源:互联网 发布:网络穿越剧电视剧大全 编辑:程序博客网 时间:2024/04/29 19:32

        数据库中的控制语句分为分支语句和循环语句,接下来通过其在存储过程中的使用给大家逐一介绍:

        分支语句

        1、if then、elseif、else、end if语句
        示例:
        创建存储过程:

DELIMITER //  CREATE PROCEDURE proc (IN sex_type INT, OUT sex_name VARCHAR(4), IN role_type INT, OUT role_name VARCHAR(8))  NO SQL BEGIN IF (sex_type = 0) THEN SET sex_name = '女';ELSEIF (sex_type = 1) THEN SET sex_name = '男';ELSE SET sex_name = '其它';END IF;  IF (role_type = 0) THEN SET role_name = '管理员';ELSEIF (role_type = 1) THEN SET sex_name = '普通员工';ELSE SET role_name = '游客';END IF;  END //  DELIMITER ;
        说明:SET用来给变量赋值。

        注意:MySQL 存储过程中的每条语句的末尾,都要加上分号 “;”
        调用存储过程:

SET @sex_type=1,@role_type=2;  CALL proc(@sex_type, @sex_name, @role_type, @role_name); SELECT @sex_name AS sex, @role_name AS role;

        除了可以使用SET给变量赋值外,还可以使用into为变量赋值:

        创建存储过程:

DELIMITER //  CREATE PROCEDURE proc(OUT cur_date DATE)  NO SQLBEGIN SELECT NOW() INTO cur_date;END//  DELIMITER ;
        调用存储过程:
CALL proc(@cur_date);SELECT @cur_date;

        2、case语句: 

        示例:

        创建存储过程:
DELIMITER //  CREATE PROCEDURE proc (IN sex_type INT, OUT sex_name VARCHAR(4), IN role_type INT, OUT role_name VARCHAR(8))  NO SQL BEGIN CASE sex_type  WHEN 0 THEN SET sex_name = '女';  WHEN 1 THEN SET sex_name = '男';  ELSE SET sex_name = '其它'; END CASE;CASE role_type  WHEN 0 THEN SET role_name = '管理员'; WHEN 1 THEN SET role_name = '普通员工';  ELSE SET role_name = '游客'; END CASE;END //  DELIMITER ;
        调用存储过程:
SET @sex_type=1,@role_type=2;  CALL proc(@sex_type, @sex_name, @role_type, @role_name); SELECT @sex_name AS sex, @role_name AS role;

        循环语句

        1、while……do……end while语句

        示例:
        创建存储过程:

DELIMITER //  CREATE PROCEDURE proc (OUT result INT)  NO SQL BEGIN DECLARE i INT;  SET i=0;  WHILE i<6 DO SET i=i+1;END WHILE;SET result = i;END //  DELIMITER ;
        说明:DECLARE用来声明存储过程中的临时变量
        调用存储过程:
CALL proc(@result); SELECT @result AS result;
        2、repeat……until……end repeat语句

        该种循环类似于Java中的do while,即在执行操作后检查条件是否成立,而while则是执行前进行检查。

        示例:

        创建存储过程:
DELIMITER //CREATE PROCEDURE proc (OUT result INT)NO SQLBEGINDECLARE i INT;SET i=0;REPEAT SET i=i+1;UNTIL i!=0 END REPEAT;SET result = i;END //DELIMITER;
        调用存储过程:

CALL proc(@result); SELECT @result AS result;
        3、 loop……end loop语句

        示例:

        创建存储过程:
DELIMITER //  CREATE PROCEDURE proc(OUT result INT)  NO SQLBEGIN DECLARE i INT DEFAULT 0;  LOOP_LABLE:LOOP  SET i=i+1;  IF i >=2 THEN LEAVE LOOP_LABLE;  END IF;  END LOOP; SET result = i; END;  //  DELIMITER ; 
        说明:DEFAULT用于给声明的临时变量赋默认值。
        调用存储过程:
CALL proc(@result); SELECT @result AS result;

1 0