Question

I´m trying to define a stored procedures which accepts 2 parameteres , one would be the table column which has to be equal with the second parameter i will provide. Code :

 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

The thing is that i don´t know how to provide the _value param as a string. If i run it like this i get a Mysql 1064 near ´=myEmail´( params where ´userEmail´,´myEmail´). Thanks !

Was it helpful?

Solution

In your below code, you are missing a space after WHERE. It should be like below; give a space after WHERE and in =

SET @sql = CONCAT('SELECT * FROM Users WHERE ', _field, ' = ' ,_value);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top