2013-07-16 3 views
-1

Я создал процедуру в mysql, но я ничего не могу сделать с помощью процедуры, что с ней не так?Что случилось с моей процедурой в 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 
// 

в моей процедуре, я создать представление и выберите детали с точки зрения, но я могу выбрать nothing.I думаю, что есть что-то неправильное в Params, но я не sure.Can кто-нибудь мне помочь?

ответ

0

Вы не должны поставить кавычки вокруг переменных параметров:

WHERE a.stationID = stationIDD and a.arriveTime >= dateStart and a.clczTime <= dateEnd 

Кстати, как подзапросы в вашем UNION идентичны. Почему у вас один и тот же запрос дважды?

0

Вы можете получить сообщение об ошибке на этой линии WHERE a.stationID = 'stationIDD' and a.arriveTime >= 'dateStart' and a.clczTime <= 'dateEnd' потому, что вы кладете одинарные кавычки Arround переменной, которая преобразует его в постоянной строки и не variable.So изменить его

`WHERE a.stationID = stationIDD and a.arriveTime >= dateStart and a.clczTime <=dateEnd` 
Смежные вопросы