Stored Procedures in MySQL

From the MySQL Advanced Features cheat sheet · Stored Procedures & Functions · verified Jul 2026

Stored Procedures

Create and use stored procedures

sql
-- Simple procedure
DELIMITER $$
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
  SELECT * FROM users WHERE id = user_id;
END$$
DELIMITER ;

-- Call procedure
CALL GetUserById(123);

-- Procedure with OUT parameter
DELIMITER $$
CREATE PROCEDURE GetUserCount(OUT total INT)
BEGIN
  SELECT COUNT(*) INTO total FROM users;
END$$
DELIMITER ;

-- Call with output
CALL GetUserCount(@count);
SELECT @count;

-- DETAILED_TAB:
-- Complex procedure with error handling
DELIMITER $$
CREATE PROCEDURE TransferFunds(
  IN from_account INT,
  IN to_account INT,
  IN amount DECIMAL(10,2)
)
BEGIN
  DECLARE exit handler for sqlexception
  BEGIN
    ROLLBACK;
    RESIGNAL;
  END;
  
  START TRANSACTION;
  
  UPDATE accounts 
  SET balance = balance - amount
  WHERE id = from_account AND balance >= amount;
  
  IF ROW_COUNT() = 0 THEN
    SIGNAL SQLSTATE '45000'
    SET MESSAGE_TEXT = 'Insufficient funds';
  END IF;
  
  UPDATE accounts
  SET balance = balance + amount
  WHERE id = to_account;
  
  COMMIT;
END$$
DELIMITER ;
💡 Procedures can have IN, OUT, INOUT parameters
📌 Use DELIMITER to change statement delimiter
⚡ Stored procedures reduce network traffic
⚠️ Harder to version control than app code
🟢 Essential for complex business logic
proceduresstored-procedures

More MySQL tasks

Back to the full MySQL Advanced Features cheat sheet