拆分字符就弄成字符弄的吧
DECLARE @TABLE TABLE(STRING VARCHAR(8000))
INSERT @TABLE SELECT DBO.FUNCTION

解决方案 »

  1.   


    --返回类型:表(table)Create Function FunTest(    @Para1 Type(Length),    @Para2 Type(Length),    --……    @ParaN Type(Length))return @Table table(    Col1 Type(Length),    Col2 Type(Length),    --……    ColN Type(Length))asbegin    --【函数实体】    --填充表数据内容    --……Insert into @Table……    --……Update @Table set……    return end --存储过程--返回数据表Create Proc ProcTest(    @Para1 Type(Length),    @Para2 Type(Length),    --……    @ParaN Type(Length)    )as --表变量定义declare @Table table(    Col1 Type(Length),    Col2 Type(Length),    --……    ColN Type(Length)) declare @P1 Type(Length)--……declare @PN Type(Length) begin   【存储过程实体】    Insert into @Table select * from FunTest(参数) where (条件)<与SQL查询语句一致>    --……    --……        select * from @Tableend 
      

  2.   

    CREATE function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))   
      returns @temp table(a varchar(100))   
      /*--实现split功能的函数*/   
      as     
      begin   
              declare @i int   
              set @SourceSql=rtrim(ltrim(@SourceSql))   
              set @i=charindex(@StrSeprate,@SourceSql)   
              while @i>=1   
              begin 
                    insert   @temp   values(left(@SourceSql,@i-1))   
                    set   @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)   
                    set   @i=charindex(@StrSeprate,@SourceSql)   
              end   
              if @SourceSql<>'\'   
                  insert   @temp   values(@SourceSql)   
              return     
      end  --1.在存储过程中调用返回表的函数 
    CREATE PROC Test1
    AS
    SELECT * FROM dbo.f_split('1,2,3',',')EXEC Test1
    /*
    a
    ---------
    1
    2
    3
    (3 行受影响)*/
    --存储过程中把这个函数的返回值赋给一个变量
    CREATE PROC Test2
    AS DECLARE @TB TABLE(id int) INSERT @TB
    SELECT * FROM dbo.f_split('1,2,3',',') SELECT * FROM @TBEXEC Test2
    /*
    id
    -----------
    1
    2
    3(3 行受影响)*/