我在mysql中的程序出了什么问题?

时间:2013-07-16 08:08:05

标签: mysql stored-procedures

我在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
//

在我的程序中,我创建了一个视图,并从视图中选择了详细信息,但我可以选择任何内容。我认为参数中有问题,但我不确定。可以帮助我吗?

2 个答案:

答案 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`