The ALTER PROCEDURE command in MySQL allows for the modification of an existing stored procedure by adding, removing, or modifying its parameters, local variables, and SQL statements. It enables database administrators and developers to update procedures without recreating them entirely.


ALTER PROCEDURE procedure_name


  • procedure_name: The name of the stored procedure to be altered.


  • language_and_flags: Specifies the programming language and flags to use with the procedure.
  • characteristic_changes: Alters characteristics like SQL SECURITY or CONTAINS SQL, etc.
  • routine_body: The new body of the procedure, including SQL statements, control flow, and exception handling.
  • deterministic_clauses: Specifies whether the procedure is deterministic or not.
  • parameters: Modifies or adds parameters to the procedure.


  • LANGUAGE SQL: Uses SQL as the language for the procedure.
  • NOT DETERMINISTIC: Indicates that the procedure can produce different results for the same input.
  • CONTAINS SQL: Indicates that the procedure contains SQL statements.
  • READS SQL DATA: Indicates that the procedure reads data from tables.
  • MODIFIES SQL DATA: Indicates that the procedure modifies data in tables.


Example 1: Adding a parameter to a procedure

ALTER PROCEDURE get_customer_orders(IN customer_id INT)
    ADD PARAMETER order_date DATE;

Example 2: Changing the language of a procedure

ALTER PROCEDURE calculate_discount(IN customer_level VARCHAR(10))

Example 3: Updating the body of a procedure

ALTER PROCEDURE update_employee_salary(IN employee_id INT, IN new_salary DECIMAL(10,2))
        SET @salary = new_salary;
        UPDATE employees SET salary = @salary WHERE employee_id = employee_id;

Common Issues

  • Syntax errors: Verify that the syntax is correct, especially when making multiple changes.
  • Duplicate parameter names: Ensure that parameter names are unique within the procedure.
  • Incorrect data types: Confirm that data types for parameters and variables match the expected values.


  • WITH EXECUTE: Grants execution privileges on the modified procedure.
  • GRANT: Grants permissions to other users to execute the procedure.
  • CALL: Calls the modified procedure with updated parameters.
  • CREATE PROCEDURE: Creates a new stored procedure.
  • DROP PROCEDURE: Deletes an existing stored procedure.
  • SHOW PROCEDURE STATUS: Displays information about stored procedures, including their status and parameters.