提问人:Him 提问时间:10/30/2023 更新时间:10/30/2023 访问量:45
SELECT 命令在存储过程中无法正常工作 [duplicate]
SELECT command doesn't work properly in Stored procedure [duplicate]
问:
我想创建存储过程,该过程在输入 2 个参数值后选择特定行。
所以我的代码是:
CREATE DEFINER=`root`@`localhost` PROCEDURE `find_stock_order`(
in product_name varchar(45),
thedate date)
BEGIN
SELECT * from stock_order_view
WHERE product_name=product_name AND DateTime_order = thedate;
END
我使用 WHERE ....和。。。。以选择所需的行。但是,它显示的行数比需要的多,就好像我使用 OR 而不是 AND 一样。当我输入“可乐”product_name和日期“2022-12-01”时,它会显示所有带有“可乐”的行以及所有可能的日期,以及所有带有“2022-12-01”的行以及所有可能的产品。
我应该如何编写代码,使其仅显示 product_name='Cola' AND thedate='2022-12-01' 的行
答:
2赞
Amit Mohanty
10/30/2023
#1
此问题是由于 SQL 查询中的参数和列名之间的命名冲突造成的。当您对参数使用与查询中的列名相同的名称时,MySQL会将它们解释为相同,这就是为什么您得到的结果与您尝试过滤的特定值不匹配的原因。
CREATE DEFINER = `root`@`localhost` PROCEDURE `find_stock_order`(
in p_product_name varchar(45),
in p_thedate date)
BEGIN
SELECT * from stock_order_view
WHERE product_name = p_product_name AND DateTime_order = p_thedate;
END
评论
product_name