MySQL存儲過程是一種用于在數據庫中存儲并重復執行一組SQL語句的編程方式。存儲過程可以使用多種參數類型,這些參數可以在調用存儲過程時提供,以提高存儲過程的靈活性和復用性。
MySQL存儲過程支持多種參數類型,包括輸入參數、輸出參數和輸入輸出參數。
--聲明一個帶有輸入參數的存儲過程 CREATE PROCEDURE sp_insert_user(IN p_name VARCHAR(50), IN p_age INT) BEGIN INSERT INTO user(name, age) VALUES(p_name, p_age); END; --調用存儲過程 CALL sp_insert_user('Lucy', 28);
在上面的代碼中,存儲過程“sp_insert_user”中聲明了兩個輸入型參數,分別是“p_name”和“p_age”,用于向“user”表中插入一條記錄。在調用存儲過程時,我們傳遞了“Lucy”和“28”兩個參數。
--聲明一個帶有輸出參數的存儲過程 CREATE PROCEDURE sp_get_user_count(OUT p_count INT) BEGIN SELECT COUNT(*) INTO p_count FROM user; END; --調用存儲過程 CALL sp_get_user_count(@count); SELECT @count;
上述代碼中,存儲過程“sp_get_user_count”中聲明了一個輸出型參數“p_count”,用于返回“user”表的記錄數。在執行存儲過程后,我們使用“SELECT”語句從輸出參數“@count”中獲取了“user”表的記錄數。
--聲明一個帶有輸入輸出參數的存儲過程 CREATE PROCEDURE sp_update_user(INOUT p_id INT, IN p_name VARCHAR(50)) BEGIN UPDATE user SET name=p_name WHERE id=p_id; END; --調用存儲過程 SET @id=1; CALL sp_update_user(@id, 'Tom'); SELECT @id;
在上述代碼中,存儲過程“sp_update_user”中聲明了一個輸入輸出型參數“p_id”,以及一個輸入型參數“p_name”。在調用存儲過程時,我們將“@id”變量傳遞給輸入輸出參數“p_id”,并將“Tom”傳遞給輸入型參數“p_name”。在存儲過程中,我們使用“UPDATE”語句根據“id”更新了“user”表中的記錄。在執行存儲過程后,我們使用“SELECT”語句從輸入輸出參數“@id”中獲取了被修改的記錄的“id”。