gpt4 book ai didi

mysql - 如何处理 mysql 过程中的 where 子句?

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:07 25 4
gpt4 key购买 nike

这是我的程序。

DELIMITER //
drop procedure if exists GetID;
CREATE PROCEDURE GetID(IN tb VARCHAR(255), in name2 varchar(255))
BEGIN

set @sel = concat( 'select id FROM ', tb, ' WHERE ename = ', name2);
prepare stmt from @sel;
execute stmt;
deallocate prepare stmt;
END //
DELIMITER ;

当我尝试使用 GetID('city', 'ny') 执行存储过程时。我得到一个错误

unknown column 'ny' in where clause ...

这里 'city' 是表名。怎么了?

最佳答案

假设name2是一个字符串参数,要与传入表的ename列进行比较

在 SQL 中给 name2 加上引号:

set @sel = concat('select id FROM ', tb, ' WHERE ename = ''', name2,'''');

通常建议不要使用字符串连接来构建 SQL 查询。由于您在查询中对列名进行硬编码,因此“动态”提供表名毫无意义。但是,如果必须,请使用 QUOTE 正确转义并引用传递的字符串。

set @sel = concat('select id FROM ', tb, ' WHERE ename = ', quote(name2));

关于mysql - 如何处理 mysql 过程中的 where 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com