我在mysql中创建了一个程序,但我可以通过这个程序选择什么,它有什么问题?
delimiter //
create procedure getLineStasticFreightList(in start int(4),in row int(4),in stationIDD varchar(4),in dateStart datetime,in dateEnd datetime)
BEGIN
DROP VIEW IF EXISTS rqusg_lineStasticFreightUser;
CREATE VIEW rqusg_lineStasticFreightUser AS
SELECT a.id, c.stationName as station,b.name as track,sum(a.dddwTime) AS zgdddwsj, sum(a.ddzxTime) AS zgddzxsj, sum(a.zxzyTime) AS zgzxzysj, sum(a.ddzngyTime) AS zgddzngysj, sum(a.hcddqsTime) AS zgddqssj
FROM rqusg_line_yard a
join rqusg_line_tracks b
on a.track = b.id
join rqusg_line_stations c
on a.stationID = c.stationID
WHERE a.stationID = 'stationIDD' and a.arriveTime >= 'dateStart' and a.clczTime <= 'dateEnd'
group by a.track
union
select a.id,c.stationName as station,b.name as track,sum(a.dddwTime) as zgdddwsj,sum(a.ddzxTime) as zgddzxsj,sum(a.zxzyTime) as zgzxzysj,sum(a.ddzngyTime) as zgddzngysj,sum(a.hcddqsTime) as zgddqssj
from rqusg_line_yard a
join rqusg_line_tracks b
on a.track = b.id
join rqusg_line_stations c
on a.stationID = c.stationID
WHERE a.stationID = 'stationIDD' and a.arriveTime >= 'dateStart' and a.clczTime <= 'dateEnd'
group by a.track;
select * from rqusg_lineStasticFreightUser LIMIT start,row;
END
//
在我的程序中,我创建了一个视图,并从视图中选择了详细信息,但我可以选择任何内容。我认为参数中有问题,但我不确定。可以帮助我吗?
答案 0 :(得分:0)
你不应该在参数变量周围加上引号:
WHERE a.stationID = stationIDD and a.arriveTime >= dateStart and a.clczTime <= dateEnd
顺便说一句,你的UNION中的两个子查询都是相同的。为什么两次有相同的查询?
答案 1 :(得分:0)
您可能会在此行WHERE a.stationID = 'stationIDD' and a.arriveTime >= 'dateStart' and a.clczTime <= 'dateEnd'
收到错误,因为您正在使用单引号arround变量将其转换为常量字符串而不是变量。因此将其更改为
`WHERE a.stationID = stationIDD and a.arriveTime >= dateStart and a.clczTime <=dateEnd`