为什么下面的函数在sql server上结果正确,在sybase上结果就不正确?求大神搭救

csdn_lu 2014-06-06 01:55:20
如下,函数希望获取满足条件的一条(或多条)记录,将其字段CARRIERMAXPWR拼接成字符串,例如“388,388,...”,在sql server上可以获取正确结果,但是在sybase上,无论多少条满足条件的记录,都只返回一条记录的结果,如“388,”。
哪位可以给小弟指点迷津,多谢啦!
create function dbo.FUNC_GET_TCELL_A_PWR_93(@PlanID int,@CMENEID INT,@CELLID INT)
returns varchar(100)
as
begin
declare @Result varchar(100)
set @Result = ''
select @Result = @Result + convert(varchar(10),CARRIERMAXPWR)+ ',' from t_P_TCARRIER_93
where PlanID = @PlanID and CMENEID = @CMENEID AND CELLID = @CELLID and UARFCN < 10000

return @Result

end
go
...全文
185 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
迷途程序猿 2014-06-13
  • 打赏
  • 举报
回复
你这样写,查询的次数太多了,个人觉得,还不如用游标。 还有,如果表的数据量太大, select @UARFCN = min(UARFCN) from t_P_TCARRIER_93 这种写法,很浪费时间,亲身经历过几个小时都执行不完的情况。
csdn_lu 2014-06-08
  • 打赏
  • 举报
回复
在本论坛查看之前的帖子,找到了一条解决方案; 使用while循环即可,而且效率比游标高。 create function dbo.FUNC_GET_TCELL_A_PWR_93(@PlanID int,@CMENEID INT,@CELLID INT) returns varchar(100) as begin declare @Result varchar(100) declare @CARRIERMAXPWR int declare @UARFCN int set @Result = '' select @UARFCN = min(UARFCN) from t_P_TCARRIER_93 where PlanID = @PlanID and CMENEID = @CMENEID AND CELLID = @CELLID and UARFCN < 10000 if ( @UARFCN IS NULL) return '' select @CARRIERMAXPWR = CARRIERMAXPWR from t_P_TCARRIER_93 where PlanID = @PlanID and CMENEID = @CMENEID AND CELLID = @CELLID and UARFCN =@UARFCN while ( @CARRIERMAXPWR > 0) begin set @Result = @Result + convert(varchar(8),@CARRIERMAXPWR) + ',' select @UARFCN = min(UARFCN) from t_P_TCARRIER_93 where PlanID = @PlanID and CMENEID = @CMENEID AND CELLID = @CELLID and UARFCN < 10000 and UARFCN > @UARFCN if ( @UARFCN IS NULL) break select @CARRIERMAXPWR = CARRIERMAXPWR from t_P_TCARRIER_93 where PlanID = @PlanID and CMENEID = @CMENEID AND CELLID = @CELLID and UARFCN = @UARFCN end return @Result end go
csdn_lu 2014-06-08
  • 打赏
  • 举报
回复
多谢! 之所以想用上面的函数,主要就是要避免使用游标,游标性能太差,查询过程耗时太长! 哪位大神搭救一下,上面的例子中,如果A表的记录关联B表的多条记录,如何不使用游标 就可以统计(字符串累加)出来? 注:标题中的疑问已经搞清楚了,主要是由于T-SQL两家公司不同的实现;
迷途程序猿 2014-06-07
  • 打赏
  • 举报
回复
sql server 不熟,不清楚。 sybase要实现得用游标才行。

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧