SQL存儲過程和函數(2)

存儲過程和函數中可以使用流程控制來控制語句的執(zhí)行。MySQL中可以使用IF語句、CASE語句、LOOP語句、LEAVE語句、ITERATE語句、REPEAT語句和WHILE語句來進行流程控制。

LOOP語句可以使某些特定的語句重復執(zhí)行,實現一個簡單的循環(huán)。但是LOOP語句本身沒有停止循環(huán)的語句,必須是遇到LEAVE語句等才能停止循環(huán)。

ITERATE語句也是用來跳出循環(huán)的語句。但是,ITERATE語句是跳出本次循環(huán),然后直接進入下一次循環(huán)。

REPEAT語句是有條件控制的循環(huán)語句。當滿足特定條件時,就會跳出循環(huán)語句。


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;

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容