在存储过程中声明变量时出现错误结果
Wrong result while declaring a variable inside Stored procedure
以下是一个简单的存储过程,用于根据 table 计算男性数量,我在存储结果的过程中声明了一个变量 total_count 。
DELIMITER //
CREATE PROCEDURE GetMaleCount()
BEGIN
DECLARE total_count INT DEFAULT 0 ;
SELECT COUNT(STUDENT_ID) INTO total_count
FROM [table1]
where STUDENT_GENDER = 'M' ;
END //
DELIMITER ;
call GetMaleCount();
select @total_count as tc;
当我执行此过程时,我得到 NULL 作为答案,但是当我单独执行内部 sql 查询时,我得到正确答案 1852。我是否以错误的方式声明了变量?
您声明的 total_count
仅在过程中可见。这就是为什么它在 NULL
之外。定义过程时需要使用OUT
参数:
DELIMITER //
CREATE PROCEDURE GetMaleCount(OUT total_count INT)
BEGIN
SELECT COUNT(STUDENT_ID) INTO total_count
FROM [table1]
where STUDENT_GENDER = 'M' ;
END //
DELIMITER ;
call GetMaleCount(@total_count);
select @total_count as tc;
您需要使用 OUT 参数。
DELIMITER //
CREATE PROCEDURE GetMaleCount(OUT total_count INT)
BEGIN
SELECT COUNT(STUDENT_ID) INTO total_count
FROM [table1]
where STUDENT_GENDER = 'M' ;
END //
DELIMITER ;
call GetMaleCount(@total_count);
select @total_count as tc;
以下是一个简单的存储过程,用于根据 table 计算男性数量,我在存储结果的过程中声明了一个变量 total_count 。
DELIMITER //
CREATE PROCEDURE GetMaleCount()
BEGIN
DECLARE total_count INT DEFAULT 0 ;
SELECT COUNT(STUDENT_ID) INTO total_count
FROM [table1]
where STUDENT_GENDER = 'M' ;
END //
DELIMITER ;
call GetMaleCount();
select @total_count as tc;
当我执行此过程时,我得到 NULL 作为答案,但是当我单独执行内部 sql 查询时,我得到正确答案 1852。我是否以错误的方式声明了变量?
total_count
仅在过程中可见。这就是为什么它在 NULL
之外。定义过程时需要使用OUT
参数:
DELIMITER //
CREATE PROCEDURE GetMaleCount(OUT total_count INT)
BEGIN
SELECT COUNT(STUDENT_ID) INTO total_count
FROM [table1]
where STUDENT_GENDER = 'M' ;
END //
DELIMITER ;
call GetMaleCount(@total_count);
select @total_count as tc;
您需要使用 OUT 参数。
DELIMITER //
CREATE PROCEDURE GetMaleCount(OUT total_count INT)
BEGIN
SELECT COUNT(STUDENT_ID) INTO total_count
FROM [table1]
where STUDENT_GENDER = 'M' ;
END //
DELIMITER ;
call GetMaleCount(@total_count);
select @total_count as tc;