如何将多个参数传递到mysql存储过程中
我有一个正在处理的存储过程,当我尝试向它传递参数时,与使用硬编码值运行时相比,它返回无效的返回 具有硬编码值的程序:如何将多个参数传递到mysql存储过程中,mysql,stored-procedures,Mysql,Stored Procedures,我有一个正在处理的存储过程,当我尝试向它传递参数时,与使用硬编码值运行时相比,它返回无效的返回 具有硬编码值的程序: BEGIN SELECT COUNT(DISTINCT ItemID) FROM ( SELECT * FROM sandbox_inventoryitempurchase WHERE OrgID = '2781823' AND PurchaseMonth>'2015-03-0
BEGIN
SELECT COUNT(DISTINCT ItemID)
FROM (
SELECT *
FROM sandbox_inventoryitempurchase
WHERE OrgID = '2781823'
AND PurchaseMonth>'2015-03-01'
) as DistinctCount;
END
运行时,返回:16,这是正确的
具有两个输入参数的过程:
BEGIN
SELECT COUNT(DISTINCT ItemID)
FROM (
SELECT *
FROM sandbox_inventoryitempurchase
WHERE OrgID = orgid
AND PurchaseMonth>sincedate
) as DistinctCount;
END
BEGIN
SELECT COUNT(DISTINCT ItemID)
FROM (
SELECT *
FROM sandbox_inventoryitempurchase
WHERE OrgID = @orgid
AND PurchaseMonth>@sincedate
) as DistinctCount;
END
输入参数定义为:
在userid integer中,在orgid integer中,在sincedate date中
运行时,返回:334,这是不正确的
我是存储过程新手,希望您能为我提供帮助,说明我做错了什么,以及我需要做什么来解决问题
谢谢…在参数之前添加@:
BEGIN
SELECT COUNT(DISTINCT ItemID)
FROM (
SELECT *
FROM sandbox_inventoryitempurchase
WHERE OrgID = orgid
AND PurchaseMonth>sincedate
) as DistinctCount;
END
BEGIN
SELECT COUNT(DISTINCT ItemID)
FROM (
SELECT *
FROM sandbox_inventoryitempurchase
WHERE OrgID = @orgid
AND PurchaseMonth>@sincedate
) as DistinctCount;
END
快速turtorial将是:
请参阅本页末尾的如何使用参数…尝试使用与列名称不同的输入参数。 更改: 致: 并以p_sincedate日期传递p_orgid整数
解析器可能会看到其中OrgID=OrgID,并且每个记录的计算结果都是true,因为它的计算结果是一个与自身比较的标识。参数名和字段名必须不同 开始 选择COUNTDISTINCT ItemID 从…起 选择* 来自sandbox\u inventoryitempurchase 其中OrgID=p_OrgID 和PurchaseMonth>p_sincedate 作为一个独立的帐户; 终止
请编辑您的问题,并显示您的过程以及您如何调用它。您好,不是。我只是想在Navicat中运行存储过程。当我让它工作时,我正在从AwareIM开发的应用程序调用这个过程,因此调用过程可能不相关?我想看到它的原因是想看到您作为orgid和sincedate传递的内容。您是否在Navicat中提供了正确的值?我相信是的。当我在Navicat中运行程序时,它会提示我输入两个参数,我输入的27818232014-01-012014-01-01与2015-03-01不同。为什么您希望得到相同数量的结果?您好,谢谢,但现在我得到的结果是0。您好,结果不同,但仍然与硬编码值不同:开始选择COUNTDISTINCT ItemID FROM SELECT*FROM sandbox\u inventoryitempurchase WHERE OrgID='2781823'和PurchaseMonth>'2015-03-01'作为DistinctCount;结束返回:16 BEGIN SELECT COUNTDISTINCT ItemID FROM SELECT*FROM sandbox\u inventoryitempurchase其中OrgID=p\u OrgID AND PurchaseMonth>p\u PurchaseMonth as DistinctCount;以输入参数结束:在p_orgid integer中,在p_purchasemonth中日期值:27818232015-03-01返回:49有什么想法吗?你是否在日期“2015-03-01”周围加上单引号?我没有,但我现在有了,它解决了这个问题!我猜这是把它当作一种计算。马克,非常感谢你的帮助我真的很感激!