SQLServer2008运用存储过程拆分字符串并查询结果并把结果存入临时表中。
实现的结果,输入 1,2,3,
去另一表中查 输出 one,two,three
我这里就是把数据存在一个临时表中 后面输出后自己处理成
one,two,three
存储过程 :
create procedure [dbo].[Proc_GETNAME]( @inUserID VARCHAR(50),--输入的要拆分的字符串用户不为空的 @inDepartID VARCHAR(50)--部门不为空的 ) AS declare @str varchar(300),@id varchar(300),@m int,@n int create table #tab(name varchar(50),value int) --把查询出来的数据存放 在这个表中 if(@inUserID <>'') set @str=@inUserID if(@inDepartID <>'') set @str=@inDepartID set @m=CHARINDEX('|',@str) set @n=1 WHILE @m>0 begin set @id=substring(@str,@n,@m-@n) if(@inUserID <>'') BEGIN insert into #tab select userName_vc ,userId_i from [OA_OrgDB].[dbo].[User] where userId_i = @id --把查询出来的数据存入表中 print '1' end if(@inDepartID <>'') begin insert into #tab select deptName_vc,deptId_i from [OA_OrgDB].[dbo].[Department] where deptId_i = @id print '2' end set @n=@m+1 set @m=CHARINDEX('|',@str,@n) print @m print @id end select * from #tab --drop table #tab
虽然写完了 感觉挺简单,可是写的时候是真费劲啊。。