You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何以下查询中我的Stored Procedure执行后返回NULL值?

问题原因分析
  • 核心原因:声明的sub变量未被正确赋值
    你编写的存储过程中,select subject from student where subject=subject_name;语句仅执行了查询操作,没有将查询结果写入提前声明的sub变量中,sub变量始终保持初始化的NULL值,因此if sub="Computer Science"的判断条件永远不成立,输出参数s_scourse不会被赋值,最终返回NULL。
  • 潜在问题:未兼容查询结果异常场景
    如果传入的subject_name在表中不存在,或者存在多条匹配记录时,直接赋值会触发警告或报错,需要提前做兼容处理。
修正后的存储过程代码
delimiter //
create procedure get_students(in subject_name varchar(50),out s_scourse varchar(50))
begin
declare sub varchar(50) default null;
-- 通过SELECT INTO语法将查询结果赋值给sub变量,加LIMIT 1避免多条匹配记录报错
select subject into sub from student
where subject=subject_name
limit 1;
if sub="Computer Science"
then set s_scourse="B.Tech";
-- 可根据需求补充else分支,给其他场景的输出参数赋默认值,避免返回NULL
-- else set s_scourse="Other";
end if;
end//
delimiter ;
调用验证
call get_students("Computer Science",@s_scourse);
select @s_scourse;

执行后即可得到预期的B.Tech结果。

内容的提问来源于stack exchange,提问作者Tanmay Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:06:03