【公交换乘代码修改】如何限制换乘次数?
|
sqq4290
2008-05-18
下面是一个名为new_p_qry的存储过程主要是根据输入起点站返回换乘线路
CREATE proc new_p_qry
@begin_state nvarchar(50), --起点站
@end_state nvarchar(50) --终点站
as
set nocount on
declare @l int
set @l=0
select bus_id,line=cast('('+rtrim(bus_id)+': '+rtrim(stops) as varchar(8000))
,stops,orderid=orderid+1,level=@l,gid=1
into #t from BSR where stops=@begin_state
while @@rowcount>0 and not exists(select * from #t where stops=@end_state)
begin
set @l=@l+1
insert #t(line,bus_id,stops,orderid,level,gid)
select
line=a.line+case
when a.bus_id=b.bus_id
then '->'+rtrim(b.stops)
else ') => ('+rtrim(b.bus_id)+': '+rtrim(b.stops)
end,
bus_id=b.bus_id,stops=b.stops,orderid=b.orderid+1,@l,
case when a.bus_id=b.bus_id then a.gid else a.gid+1 end
from #t a,BSR b
where a.level=@l-1
and(
a.bus_id=b.bus_id and a.orderid=b.orderid
or
a.stops=b.stops and a.bus_id<>b.bus_id)
end
select 起点站=@begin_state
,终点站=@end_state
,转车次数=gid
,经过站数=case when gid<3 then @l else @l-gid+2 end
,乘车线路=line+')'
from #t where level=@l and stops=@end_state
GO
问题:如何增添一个参数来限制换乘的次数为4以下(包括4次)? |

