我对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
我完全不知所措,任何帮助都将不胜感激。
1条答案
按热度按时间laximzn51#
条件:
将不起作用,因为它使查询:
也就是说,条件变成了普通字符串。
您可以做的事情:
或者使用动态SQL(
PREPARE
,EXECUTE
.)