--给一个邹老大的例子
 --邹建   2004-4--*/   
  create   function   f_split(   
  @str   varchar(8000), --要分拆的字符串   
  @splitchar   varchar(10) --分隔符   
  )returns   table   
  as   
  return(   
  select   re=substring(@str,id,charindex(@splitchar,@str+@splitchar,id)-id)   
  from   序数表     
  where   id<=len(@str)+1   and   charindex(@splitchar,@splitchar+@str,id)-id=0   
  )   
  go   
    
  --调用   
  select   *   from   f_split('asdlkfa,asf   as,dda,adfsad',',')   
    

解决方案 »

  1.   

    同意楼上 用UDF(用户自定义函数)而非sp(存储过程)函数跟过程区别就是带了个返回值
    你要返回个表 当然需要用函数
      

  2.   

    insert into 表名()
    exec 存儲過程
    這個我知道,但是這樣一定得表存在才行。表不存在也可以嗎
      

  3.   

    select * into #tbtest from tb_test where 1<>1 --先建个返回记录集一样结构的临时表
    insert into #tbtest exec pr_rsTest--把返回的结果报错到临时表里select * from #tbtest--对临时表操作
    drop table #tbtestCreate   PROCEDURE   pr_rsTest 
    AS 
        Declare   @SQL   nvarchar(4000) 
        Set   @SQL='select   *   from   tb_test' 
        --   @SQL是根据传入参数动态组合的,此仅为示例 
        exec   (@SQL)   --如果以EXEC方式执行,总是不能返回数据集
      

  4.   

    过程
    select * into ##表 from (动态语句)a
    函数
    select * from ##表
    drop ##表
      

  5.   

    還有人會的嗎,這種問題,不知SQL版主知道不。