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

问题描述 投票:0回答:1

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

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

mysql variables stored-procedures
1个回答
0
投票

条件:

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

© www.soinside.com 2019 - 2024. All rights reserved.