where子句中带有varchar变量的Mysql存储过程问题

where子句中带有varchar变量的Mysql存储过程问题,mysql,sql,stored-procedures,where-clause,varchar,Mysql,Sql,Stored Procedures,Where Clause,Varchar,我在mysql存储过程中遇到了一个问题,where子句中的varchar变量不返回结果。查询如下 declare itcode varchar(30); declare qty int; declare finished int; declare testc cursor for select itemcode from mytable limit 0,10; DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1; open t

我在mysql存储过程中遇到了一个问题,where子句中的varchar变量不返回结果。查询如下

declare itcode varchar(30);
declare qty int;
declare finished int;
declare testc cursor for 
    select itemcode from mytable limit 0,10;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
open testc;
read_loop:Loop
    fetch testc into itcode;
    if finished=1 then
        leave read_loop;
    end if;
    select sum(Qty) as total from 
            mytable2 
            where itemcode=itcode;
end loop;
close testc;
在上面的语句中,即使两个表上都存在项代码,它也返回null。但是,如果我在where close上使用手动指定的值编写语句,如下所示

select sum(Qty) as total from mytable2 where itemcode='p2343';
我无法理解为什么varchar变量在where子句上不起作用。有人能让我帮助我找出如何解决这种类型的问题吗

注意:两个表列都是varchar(30)

附加说明:当我如下更改语句时,它也会打印itcode中的值

select sum(Qty) as total,itcode from mytable2 where itemcode=itcode

因此,itcode的值为“p2343”,但上述存储过程不起作用。

这里的问题是,该过程引用了全局变量
qty
,而支持
mytable2
上的
qty
列。尝试更改此选项:

declare qty int;
对此

declare v_qty int;

其中itemcode类似于'p2343'有效?是的,当我用单引号表示字符串时,它有效。但是当我分配变量时,它不起作用。那么
where itemcode像itcode?也试过了,没有用。看来你的
itcode
没有值“p2343”。非常感谢。我用谷歌搜索了所有地方来解决这个问题。为了理解,mysql不会识别字段和变量的大小写差异吗?通常取决于操作系统。Unix=是,Windows&Mac OS=否。有关更多信息,请查看此项: