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 // 

IN AND OUT 有传入和传出参数 

  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 // 

相关内容