我对 MYSQL 存储过程非常陌生。
如果我在我的服务器上运行此代码
select * from groupover o
left join groupatt a on o.myindex = a.myindex and a.sessid = 20231
where o.univ = 'UofU';
我成功获得了结果列表。
但是,当我将该 select 语句传输到存储过程中,在其中将 sessid 和 University 转换为变量时,它会返回一个空结果集。
我使用带有与上面相同的信息的 call 命令。
call getgroups("20231","UofU");
这是我的存储过程。
CREATE DEFINER=`fsadmin`@`142.184.89.102` PROCEDURE `getgroups`(
IN mysessid text(5),
IN myuniv text(10),
)
BEGIN
declare mywhere longtext;
IF myuniv != "N/A" THEN
set mywhere = concat("o.univ = ", myuniv);
select * from groupover o
left join groupatt a on o.myindex = a.myindex and a.sessid = mysessid
where mywhere;
END IF;
END
我完全不知所措,任何帮助将不胜感激。
条件:
where mywhere;
将不起作用,因为它使查询成为:
select * from groupover o
left join groupatt a on o.myindex = a.myindex and a.sessid = mysessid
where 'o.univ = myuniv_parameter_value';
即条件变为纯字符串。
你可以做什么:
select * from groupover o
left join groupatt a on o.myindex = a.myindex and a.sessid = mysessid
where o.univ = myuniv;
或者使用动态 SQL (
PREPARE
, EXECUTE
...)