我是 mysql 新手,我正在尝试使用下面的 SP 来获取数据,其中我使用了 if else 语句
CREATE DEFINER=`Travel_user`@`%` PROCEDURE `new_procedure`(in bus_id int, in travel_id int, in tr_date Date, in Seat_no varchar(45))
BEGIN
select @SeatNo := Fare from Travel_booking.SpecialFares where TravelId=travel_id and date=tr_date ;
IF (@SeatNo = NULL) then
select @SeatNo := sd.Fare from SeatDetails as sd
inner join tbl_ColumnDetails as c on c.ColumnId=sd.ColId
inner join tbl_RowsDetails as r on r.RowId=c.RowID
inner join BusStructure as bs on bs.StructId=r.StructureId
inner join BusDetails as bd on bd.Structure=bs.StructId
where sd.IsActive=1 and bd.BusiId=bus_id and sd.travelid=travel_id and sd.SeatNo=Seat_no;
END IF;
END
我这样调用它
call Travel_booking.new_procedure(34, 53, '2018-03-01', 'L2');
第一个选择查询工作正常并且显示正确的结果。 但是当第一个查询结果为空时,if 语句给出空白结果。
我已经分别检查了两个查询,如下所示,它们都有效。
第一个查询,
select Fare from Travel_booking.SpecialFares
where TravelId=53 and date='2018-03-02';
第二个查询,
select sd.Fare from SeatDetails as sd
inner join tbl_ColumnDetails as c on c.ColumnId=sd.ColId
inner join BusStructure as bs on bs.StructId=r.StructureId
inner join BusDetails as bd on bd.Structure=bs.StructId
where sd.IsActive=1 and bd.BusiId=34 and sd.travelid=53 and sd.SeatNo='L2';
但是当我在 SP 中执行它们并向它们传递参数时,我在同一查询的 if 语句中得到空白结果。
最佳答案
感谢大家的回复并帮助我找出错误所在。 我得到了我的答案 只需简单地在 SP 开头声明 null 变量,如
BEGIN
select @SeatNo := NULL;
select @SeatNo := Fare from Travel_booking.SpecialFares where TravelId=travel_id and date=tr_date ;....
关于MySql SP 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228507/