天天看點

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

直接上内容

第一:存儲過程中CASE 條件

CREATE PROCEDURE p_case(IN parameter1 INT) 

BEGIN 

    DECLARE variable1 INT; 

    SET variable1 = parameter1 + 1; 

    CASE variable1 

        WHEN 0 THEN INSERT INTO t VALUES(0); 

        WHEN 1 THEN INSERT INTO t VALUES(1); 

        ELSE INSERT INTO t VALUES(2); 

    END CASE; 

END; 

LOOPS 循環

【一】WHILE...END WHILE

【二】LOOP...END LOOP

【三】REPEAT...END REPEAT

【四】GOTO

一:WHILE...END WHILE

CREATE PROCEDURE p_while() 

    DECLARE v INT; 

    SET v = 0; 

    WHILE v < 5 DO 

        INSERT INTO t VALUES(v); 

        SET v = v + 1; 

    END WHILE; 

END;// 

二:LOOP...END LOOP

CREATE PROCEDURE p_loop() 

    loop_label:LOOP 

        IF v>=5 THEN 

            LEAVE loop_label; 

        END IF; 

    END LOOP; 

END;//  

三:REPEAT...END REPEAT

CREATE PROCEDURE p_repeat() 

    REPEAT 

        UNTIL v>=5 

    END REPEAT; 

存儲過程:

有傳回

CREATE PROCEDURE optionsrank( 

    OUT pl INT, 

    OUT ph INT, 

    OUT pa INT 

    SELECT MAX(option_id) INTO ph FROM wp_options; 

    SELECT Min(option_id) INTO pl FROM wp_options; 

    SELECT AVG(option_id) INTO pa FROM wp_options; 

CALL optionsrank(@pl,@ph,@pa) // 

SELECT @pl,@ph,@pa // 

IN AND OUT 有傳入和傳出參數

CREATE PROCEDURE in_out_test( 

    IN in_option_id INT, 

    OUT out_option_value TEXT 

BEGIN  

    SELECT option_value INTO out_option_value FROM wp_options WHERE option_id = in_option_id; 

CALL in_out_test(100,@out) // 

SELECT @out // 

    本文轉自kefirking 51CTO部落格,原文連結:http://blog.51cto.com/phpzf/793775,如需轉載請自行聯系原作者