为什么我的 SQL 过程返回整个 table?
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");
我的Table(学生)
我的结果
使用其他名称调用您的参数,因为您在 table 中有名为 status 的列。
我通常遵循参数前缀 p_
和局部变量前缀 v_
的约定。
CREATE PROCEDURE STUDENTS_BY_STATUS(p_status VARCHAR(10))
BEGIN
SELECT BannerId, Name FROM STUDENT WHERE Status = p_status;
END //
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS;
DELIMITER //
CREATE PROCEDURE STUDENTS_BY_STATUS(IN statusIn VARCHAR(10))
BEGIN
SELECT BannerId, Name FROM STUDENT WHERE Status=statusIn;
END //
DELIMITER ;
将其标记为 IN 参数并为参数使用不同的名称。
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");
我的Table(学生)
我的结果
使用其他名称调用您的参数,因为您在 table 中有名为 status 的列。
我通常遵循参数前缀 p_
和局部变量前缀 v_
的约定。
CREATE PROCEDURE STUDENTS_BY_STATUS(p_status VARCHAR(10))
BEGIN
SELECT BannerId, Name FROM STUDENT WHERE Status = p_status;
END //
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS;
DELIMITER //
CREATE PROCEDURE STUDENTS_BY_STATUS(IN statusIn VARCHAR(10))
BEGIN
SELECT BannerId, Name FROM STUDENT WHERE Status=statusIn;
END //
DELIMITER ;
将其标记为 IN 参数并为参数使用不同的名称。