📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials MySQL Stored Procedures

Stored Procedures

5 min read
Write stored procedures with IN/OUT parameters, exception handlers, and transactions for reuse.

Stored Procedures

DELIMITER //

CREATE PROCEDURE GetUserOrders(IN user_id INT, OUT order_count INT)
BEGIN
    SELECT COUNT(*) INTO order_count
    FROM orders
    WHERE orders.user_id = user_id;
END //

CREATE PROCEDURE CreateUser(IN p_name VARCHAR(100), IN p_email VARCHAR(255))
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;
    INSERT INTO users (name, email) VALUES (p_name, p_email);
    INSERT INTO profiles (user_id) VALUES (LAST_INSERT_ID());
    COMMIT;
END //

DELIMITER ;

-- Call
CALL GetUserOrders(1, @count);
SELECT @count;

CALL CreateUser('Alice', 'alice@example.com');

-- Drop
DROP PROCEDURE IF EXISTS GetUserOrders;