SQL存储过程和函数(2)

存储过程和函数中可以使用流程控制来控制语句的执行。MySQL中可以使用IF语句、CASE语句、LOOP语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句来进行流程控制。

LOOP语句可以使某些特定的语句重复执行,实现一个简单的循环。但是LOOP语句本身没有停止循环的语句,必须是遇到LEAVE语句等才能停止循环。

ITERATE语句也是用来跳出循环的语句。但是,ITERATE语句是跳出本次循环,然后直接进入下一次循环。

REPEAT语句是有条件控制的循环语句。当满足特定条件时,就会跳出循环语句。


DELIMITER &&

CREATE PROCEDURE pro_user5(IN bookId INT)

BEGIN

SELECT COUNT(*) INTO @num FROM t_user WHERE id=bookId;

IF @num>0 THEN UPDATE t_user SET userName='java12345' WHERE id=bookId;

ELSE

  INSERT INTO t_user VALUES(NULL,'2312312','2321312');

END IF ;

END

&&

DELIMITER ;


DELIMITER &&

CREATE PROCEDURE pro_user6(IN bookId INT)

BEGIN

SELECT COUNT(*) INTO @num FROM t_user WHERE id=bookId;

CASE @num

  WHEN 1 THEN UPDATE t_user SET userName='java12345' WHERE id=bookId;

  WHEN 2 THEN INSERT INTO t_user VALUES(NULL,'2312312','2321312');

  ELSE INSERT INTO t_user VALUES(NULL,'231231221321312','2321312321312');

END CASE ;

END

&&

DELIMITER ;


DELIMITER &&

CREATE PROCEDURE pro_user7(IN totalNum INT)

BEGIN

  aaa:LOOP

    SET totalNum=totalNum-1;

    IF totalNum=0 THEN LEAVE aaa ;

    ELSE INSERT INTO t_user VALUES(totalNum,'2312312','2321312');

    END IF ;

  END LOOP aaa ;

END

&&

DELIMITER ;


DELIMITER &&

CREATE PROCEDURE pro_user8(IN totalNum INT)

BEGIN

  aaa:LOOP

    SET totalNum=totalNum-1;

    IF totalNum=0 THEN LEAVE aaa ;

    ELSEIF totalNum=3 THEN ITERATE aaa ;

    END IF ;

    INSERT INTO t_user VALUES(totalNum,'2312312','2321312');

  END LOOP aaa ;

END

&&


DELIMITER ;

DELIMITER &&

CREATE PROCEDURE pro_user9(IN totalNum INT)

BEGIN

  REPEAT

    SET totalNum=totalNum-1;

    INSERT INTO t_user VALUES(totalNum,'2312312','2321312');

    UNTIL totalNum=1

  END REPEAT;

END

&&

DELIMITER ;


DELIMITER &&

CREATE PROCEDURE pro_user10(IN totalNum INT)

BEGIN

WHILE totalNum>0 DO

  INSERT INTO t_user VALUES(totalNum,'2312312','2321312');

  SET totalNum=totalNum-1;

END WHILE ;

END

&&

DELIMITER ;


CALL pro_user();

CALL pro_user2();

CALL pro_user3();

CALL pro_user4();

CALL pro_user5(5);

CALL pro_user6(6);

CALL pro_user7(11);

CALL pro_user8(11);

CALL pro_user9(11);

CALL pro_user10(10);

DELETE FROM t_user;

你可能感兴趣的:(SQL存储过程和函数(2))