SQL server 使用自定义函数以及游标
最近忙于动态监测软件的开发,处理有关标准宗地编码和区段编码关系,关系如下表所示:
编号 |
标准宗地编码(landCode) |
所在区段编码(sectCode) |
1 |
131001BG001 |
G001 |
2 |
131001BG002 |
G001 |
3 |
131001BG003 |
G001 |
4 |
131001BG004 |
G002 |
5 |
131001BG005 |
G003 |
现在需要将表中的数据转换为如下表所示结果:
编号 |
区段编码 |
包含的标准宗地 |
1 |
G001 |
131001BG001,131001BG002,131001BG003 |
2 |
G002 |
131001BG004 |
3 |
G003 |
131001BG005 |
在SQL server数据库中,创建自定义函数,通过游标,将表的数据转化为结果表,函数代码如下所示:

1 create function combstr(@name nvarchar(50))
2 returns nvarchar(300)
3 as
4 begin
5 declare @resultStr nvarchar(300)
6 declare @tempStr nvarchar(500)
7 declare @flag int
8 declare myCur cursor --定义游标
9 For(select landCode from land where sectCode=@name )
10 open myCur –-打开游标
11 fetch next from myCur into tempStr –将游标下移
12 set @flag=0
13 while @@fetch_status=0
14 begin
15 if @flag=0
16 begin
17 set @resultStr=@tempStr
18 end
19 else
20 begin
21 set @resultStr=@resultStr+','+@tempStr
22 end
23 set @flag=@flag+1
24 fetch next from myCur into @tempStr
25 end
26 close myCur
27 deallocate myCur
28 return @result
29 end
作者:Peter Luo
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。