Search code examples
mysqlprocedures

Why is my SQL procedure returning the entire table?


DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS;

DELIMITER //

CREATE PROCEDURE STUDENTS_BY_STATUS(status VARCHAR(10))

BEGIN

    SELECT BannerId, Name FROM STUDENT WHERE Status=status;

END //

DELIMITER ;

CALL STUDENTS_BY_STATUS("Freshman");

My Table (STUDENT) enter image description here

My Result

enter image description here


Solution

  • Call your parameter with some other name as you have column named status in your table.

    I usually follow the convention of p_ prefix for parameters and v_ for local variables.

    CREATE PROCEDURE STUDENTS_BY_STATUS(p_status VARCHAR(10))
    BEGIN    
        SELECT BannerId, Name FROM STUDENT WHERE Status = p_status;
    END //