天天看點

Mysql存儲過程和存儲過程中循環小結

直接上内容

第一:存儲過程中CASE 條件

  1. CREATE PROCEDURE p_case(IN parameter1 INT) 
  2. BEGIN 
  3.     DECLARE variable1 INT; 
  4.     SET variable1 = parameter1 + 1; 
  5.     CASE variable1 
  6.         WHEN 0 THEN INSERT INTO t VALUES(0); 
  7.         WHEN 1 THEN INSERT INTO t VALUES(1); 
  8.         ELSE INSERT INTO t VALUES(2); 
  9.     END CASE; 
  10. END; 

LOOPS 循環

【一】WHILE...END WHILE

【二】LOOP...END LOOP

【三】REPEAT...END REPEAT

【四】GOTO

一:WHILE...END WHILE

  1. CREATE PROCEDURE p_while() 
  2. BEGIN 
  3.     DECLARE v INT; 
  4.     SET v = 0; 
  5.     WHILE v < 5 DO 
  6.         INSERT INTO t VALUES(v); 
  7.         SET v = v + 1; 
  8.     END WHILE; 
  9. END;// 

二:LOOP...END LOOP

  1. CREATE PROCEDURE p_loop() 
  2. BEGIN 
  3.     DECLARE v INT; 
  4.     SET v = 0; 
  5.     loop_label:LOOP 
  6.         INSERT INTO t VALUES(v); 
  7.         SET v = v + 1; 
  8.         IF v>=5 THEN 
  9.             LEAVE loop_label; 
  10.         END IF; 
  11.     END LOOP; 
  12. END;//  

三:REPEAT...END REPEAT

  1. CREATE PROCEDURE p_repeat() 
  2. BEGIN 
  3.     DECLARE v INT; 
  4.     SET v = 0; 
  5.     REPEAT 
  6.         INSERT INTO t VALUES(v); 
  7.         SET v = v + 1; 
  8.         UNTIL v>=5 
  9.     END REPEAT; 
  10. END;// 

存儲過程:

有傳回

  1. CREATE PROCEDURE optionsrank( 
  2.     OUT pl INT, 
  3.     OUT ph INT, 
  4.     OUT pa INT 
  5. BEGIN 
  6.     SELECT MAX(option_id) INTO ph FROM wp_options; 
  7.     SELECT Min(option_id) INTO pl FROM wp_options; 
  8.     SELECT AVG(option_id) INTO pa FROM wp_options; 
  9. END; 
  10. CALL optionsrank(@pl,@ph,@pa) // 
  11. SELECT @pl,@ph,@pa // 
  1. CREATE PROCEDURE in_out_test( 
  2.     IN in_option_id INT, 
  3.     OUT out_option_value TEXT 
  4. BEGIN  
  5.     SELECT option_value INTO out_option_value FROM wp_options WHERE option_id = in_option_id; 
  6. END; 
  7. CALL in_out_test(100,@out) // 
  8. SELECT @out //