我在我的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中调用此过程
提前致谢!
答案 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
变体都存在混淆。