MySql过程无法正确筛选字符串输入

时间:2017-09-27 20:24:30

标签: mysql stored-procedures

我在我的MySql数据库中进行了以下操作,这对前三个查询工作正常。但userId过滤器不起作用,它应返回具有匹配的UserId的条目,但它返回该表中的所有记录。对于两个查询都会发生这种情况(查询详细信息和详细表格)。

DELIMITER $$

DROP PROCEDURE IF EXISTS `sale`.`detailsProcedure` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `detailsProcedure`(IN userId VARCHAR(100))
BEGIN
  SELECT * FROM products WHERE ProductType=1 AND Price<=400;
  SELECT * FROM products WHERE ProductType=1 AND Price<=700;
  SELECT * FROM products WHERE ProductType=2;
  SELECT * FROM products WHERE ProductType=3;
  SELECT * FROM details WHERE UserId=userId;
  SELECT * FROM detailsTwo WHERE UserId=userId;
END $$

DELIMITER 

似乎UserId没有得到比较或没有过滤效果。语法有什么问题吗?我看了几个帖子,但没有找到特别的解决方案,这将有助于我,尝试从堆栈溢出它自己的几个方法,但问题仍然存在。寻求帮助。 注意: - 我在node.js restapi中调用此过程

提前致谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

DELIMITER $$

DROP PROCEDURE IF EXISTS `sale`.`detailsProcedure` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `detailsProcedure`(IN v_userId VARCHAR(100))
BEGIN
  SELECT * FROM products WHERE ProductType=1 AND Price<=400;
  SELECT * FROM products WHERE ProductType=1 AND Price<=700;
  SELECT * FROM products WHERE ProductType=2;
  SELECT * FROM products WHERE ProductType=3;
  SELECT * FROM details WHERE UserId=v_userId;
  SELECT * FROM detailsTwo WHERE UserId=v_userId;
END $$

DELIMITER ;

似乎所有 userId 变体都存在混淆。