sqlserver 表
时间:2011-11-25
来源:互联网
函数ByOneBus单独执行:select * from dbo.ByOneBus ('站点1','站点6')
其查询后表的结构如下:
StRoute
101
102
函数ByTwoBus单独执行:select * from dbo.ByTwoBus ('站点1','站点8')
其表结构如下:
StRoute MidStation EndRoute
101 站点6 108
101 站点20 104
函数ByThreeBus单独执行:select * from dbo.ByThreeBus ('站点1','站点25')
其表结构如下:
StRoute MidStation1 MidRoute MidStation2 EndRoute
101 站点11 104 站点21 109
现在我要将这些弄到一个函数GetBus(@StartStation nvarchar(50),@EndStation nvarchar(50))里面
但是关键是不知道表的结构,所以我不知道怎么弄。我写了如下代码,但是错误貌似挺多。所以只好来请教大家了!呵呵!求助求助。
SQL code
其我要实现的逻辑是:
if(ByOneBus查询结果不为空)
返回ByOneBus查询结果
else if(ByTwoBus查询结果不为空)
返回ByTwoBus查询结果
else
返回ByThreeBus查询结果
但是这报错说不能定义多个@temp,并且其代码中间不能有返回值。
其查询后表的结构如下:
StRoute
101
102
函数ByTwoBus单独执行:select * from dbo.ByTwoBus ('站点1','站点8')
其表结构如下:
StRoute MidStation EndRoute
101 站点6 108
101 站点20 104
函数ByThreeBus单独执行:select * from dbo.ByThreeBus ('站点1','站点25')
其表结构如下:
StRoute MidStation1 MidRoute MidStation2 EndRoute
101 站点11 104 站点21 109
现在我要将这些弄到一个函数GetBus(@StartStation nvarchar(50),@EndStation nvarchar(50))里面
但是关键是不知道表的结构,所以我不知道怎么弄。我写了如下代码,但是错误貌似挺多。所以只好来请教大家了!呵呵!求助求助。
SQL code
IF OBJECT_ID('GetBus') is not null drop function GetBus GO /*创建公交车路线直达查询的函数*/ /*其应返回一张表*/ /*路线*/ /* 702*/ CREATE FUNCTION GetBus ( @StartStation nvarchar(50), --输入乘客乘车的起始站 @EndStation nvarchar(50) --输入乘客乘车的终点站 ) RETURNS TABLE AS BEGIN DECLARE @temp TABLE(路线 nvarchar(50)) INSERT INTO @temp(路线) SELECT StRoute FROM dbo.ByOneBus(@StartStation,@EndStation) IF(@temp IS NOT NULL) RETURN @temp ELSE DECLARE @temp TABLE(车次 nvarchar(50),转乘站点 nvarchar(50),转乘车次 nvarchar(50)) INSERT INTO @temp(车次,转乘站点,转乘车次) SELECT StRoute,MidStation,EndRoute FROM dbo.ByTwoBus(@StartStation,@EndStation) IF(@temp IS NOT NULL) RETURN @temp ELSE DECLARE @temp TABLE(车次 nvarchar(50),转乘站点 nvarchar(50),转乘车次 nvarchar(50),转乘站点2 nvarchar(50),转乘车次2 nvarchar(50)) INSERT INTO @temp(车次,转乘站点,转乘车次,转乘站点2,转乘车次2) SELECT StRoute,MidStation1,MidRoute,MidStation2,EndRoute FROM dbo.ByThreeBus(@StartStation,@EndStation) RETURN @temp END
其我要实现的逻辑是:
if(ByOneBus查询结果不为空)
返回ByOneBus查询结果
else if(ByTwoBus查询结果不为空)
返回ByTwoBus查询结果
else
返回ByThreeBus查询结果
但是这报错说不能定义多个@temp,并且其代码中间不能有返回值。
作者: hs205118hs205118 发布时间: 2011-11-25
貌似不行,表值函数只能是一个查询语句,而你写的有程序流程控制,已经不能作为表值函数处理了.
作者: qianjin036a 发布时间: 2011-11-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28