我试图定义一个接受2个参数的存储过程,一个是表列,它必须与我将提供的第二个参数相等。 代码:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `selectUserByField`(IN _field varchar(150) , IN _value varchar(150))
BEGIN
SET @sql = CONCAT('SELECT * FROM Users WHERE', _field, '=' ,_value);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
问题是我不知道如何将_value参数作为字符串提供。如果我像这样运行它,我会在'= myEmail'(params where'userEmail','myEmail')附近找到一个Mysql 1064。谢谢!
答案 0 :(得分:0)
在下面的代码中,您在WHERE
之后错过了一个空格。它应该如下;在WHERE
之后和=
SET @sql = CONCAT('SELECT * FROM Users WHERE ', _field, ' = ' ,_value);