1. 程式人生 > >mysql PL(procedure language)流程控制語句

mysql PL(procedure language)流程控制語句

在MySQL中,常見的過程式SQL語句可以用在儲存體中。其中包括IF語句、CASE語句、LOOP語句、WHILE語句、ITERATE語句和LEAVE語句,它們可以進行流程控制。

  • IF語句相當於Java中的if()...else if()...else...
  • CASE語句相當於Java中的switch()...case A:...break;default...
  • LOOP語句相當於Java中的while(true){...}
  • while語句相當於Java中的while(條件){...}
  • REPEAT語句相當於Java中的do{...}while(條件)
  • LEAVE語句相當於Java中的 break; 配合LOOP使用
  • 當REPEAT出現在LOOP、REPEAT、WHILE語句中的時,相當於Java中的continue;

1. IF語句

列一:

DELIMITER//
CREATE PROCEDURE example_if(IN X INT)
BEGIN
IF X=1 THEN 
SELECT 1;
ELSEIF X=2 THEN
SELECT 2;
ELSE
SELECT 3;
END IF;
END
//
  • 注意這裡的selimiter//後面的 “//”和最後的 “//”

這樣在當前資料庫中究生成了過程控制函式example_if(x)

使用流程為

CALL example_if(6);

2. CASE語句

列二:

DELIMITER//
CREATE PROCEDURE example_case(IN X INT)
BEGIN
CASE X
WHEN 1 THEN SELECT 1;
WHEN 2 THEN SELECT 2;
ELSE SELECT 3;
END CASE;
END
//

這樣在當前資料庫中究生成了過程控制函式example_case(x)

使用:

CALL example_case(7);

3. WHILE語句

列三:

DELIMITER//
CREATE PROCEDURE example_while(OUT SUM INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
WHILE i<=100 DO
SET s=s+i;
SET i=i+1;
END WHILE;
SET SUM=s;
END
//

這樣在當前資料庫中究生成了過程控制函式example_while(x)

呼叫:

CALL example_while(@a);
SELECT @s;

4. LOOP語句

列四:

DELIMITER//
CREATE PROCEDURE example_loop(OUT SUM INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
loop_label:LOOP
SET s=s+i;
SET i=i+1;
IF i>100 THEN 
LEAVE loop_label;
END IF;
END LOOP;
SET SUM=s;
END
//

這裡的leave label相當於java中的break;

呼叫:

CALL example_loop(@s);
SELECT @s;

5. REPEAT語句

列五:

DELIMITER//
CREATE PROCEDURE example_repeat(OUT SUM INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
REPEAT
SET s=s+i;
SET i=i+1;
UNTIL i>100
END REPEAT;
SET SUM=s;
END
//

呼叫:

CALL example_repeat(@s);