mysql 存储过程输出空结果,但查询成功

soat7uwm  于 2023-10-15  发布在  Mysql
关注(0)|答案(1)|浏览(125)

我对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

我完全不知所措,任何帮助都将不胜感激。

laximzn5

laximzn51#

条件:

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(PREPAREEXECUTE.)

相关问题