当我运行以下命令时,请在SQl中选择“查询”
SELECT Count(*)
FROM workordercurrent
WHERE office_id = 1
AND ( ( scheduleddate = '2018-11-01' )
OR ( schedulestopdate = '2018-11-01' )
OR ( scheduleddate = '0000-00-00'
AND orderdate = '2018-11-01' ) )
AND worktype <> 6
查询返回694作为正确计数
当我在带有两个输入参数的SQL过程中编写相同的查询时
office_id(int) and order_date (DATE)
BEGIN
SELECT Count(*)
FROM workordercurrent
WHERE office_id = office_id
AND ( ( scheduleddate = order_date )
OR ( schedulestopdate = order_date )
OR ( scheduleddate = '0000-00-00'
AND orderdate = order_date ) )
AND worktype <> 6;
END
It returns the count as 3260
这是什么问题,因为两个查询完全相同。这是我运行存储过程的方式
答案 0 :(得分:1)
您应该避免使用与SP中使用的列/别名相同的存储过程的参数名称。 WHERE office_id = office_id
由于名称不明确而显得很奇怪。 MySQL可能无法将其解析为列名或参数。
我通常在参数名称前加上in_
或out_
或inout_
;还显示了参数的类型(出于可读性)。
因此,您可以将参数重命名为in_office_id
和in_order_date
。