关于SQL数据库存储过程的问题

王朝知道·作者佚名  2009-07-02
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

--乘车线路查询存储过程

CREATE PROC p_qry

@Station_Start nvarchar(10),

@Station_Stop nvarchar(10)

AS

SET NOCOUNT ON

DECLARE @l int

SET @l=0

SELECT ID,Station,

Line=CAST('('+RTRIM(ID)+': '+RTRIM(Station) as nvarchar(4000)),

Orders=Orders,

[Level]=@l

INTO # FROM T_Line

WHERE Station=@Station_Start

WHILE @@ROWCOUNT>0

AND NOT EXISTS(SELECT * FROM # WHERE Station=@Station_Stop)

BEGIN

SET @l=@l+1

INSERT #(Line,ID,Station,Orders,[Level])

SELECT

Line=a.Line+CASE

WHEN a.ID=b.ID THEN N'->'+RTRIM(b.Station)

ELSE N') ∝ ('+RTRIM(b.ID)

+N': '+RTRIM(b.Station) END,

b.ID,b.Station,b.Orders,@l

FROM # a,T_Line b

WHERE a.[Level]=@l-1

AND(a.Station=b.Station AND a.ID<>b.ID

OR a.ID=b.ID AND(

a.Orders=b.Orders+1

OR

a.Orders=b.Orders-1))

AND LEN(a.Line)<4000

AND PATINDEX('%[ >]'+b.Station+'[-)]%',a.Line)=0

END

SELECT N'起点站'=@Station_Start

,N'终点站'=@Station_Stop

,N'乘车线路'=Line+N')'

FROM #

WHERE [Level]=@l

AND Station=@Station_Stop

IF @@ROWCOUNT =0 --如果未有可以到达的线路,则显示处理结果表备查

SELECT * FROM #

GO

--调用

EXEC p_qry N'站A',N'站L'

/*--结果

起点站 终点站 乘车线路

---------- ------------ -----------------------------------------------------------

站A 站L (8路: 站A->站B->站C->站D->站J->站L)

--*/

==================

我看到这个公交线路的存储过程,但不懂怎样用,我还是一菜鸟

哪位仁兄能帮帮小弟,感激不尽

比如说我在程序(JAVA)中传过来起始地点,终止地点的值计算导车路线

怎么实现,谢谢了,分不多了,有正确答案一定追加!

參考答案:

最后不是有使用说明吗?

调用此SP,传递参数 @Station_Start,@Station_Stop,得到返回结果集,其中列“乘车线路”就是你要的结果

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航