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

 

虽然写完了 感觉挺简单,可是写的时候是真费劲啊。。

posted on 2013-04-03 15:38  小东北  阅读(1153)  评论(0编辑  收藏  举报