如何定义接受2个参数的存储过程

时间:2014-07-31 11:02:45

标签: mysql statements procedures

我试图定义一个接受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。谢谢!

1 个答案:

答案 0 :(得分:0)

在下面的代码中,您在WHERE之后错过了一个空格。它应该如下;在WHERE之后和=

之后留出空格
SET @sql = CONCAT('SELECT * FROM Users WHERE ', _field, ' = ' ,_value);