日期:2014-05-18  浏览次数:20509 次

一个自定义函数返回表结构的错误


CREATE   FUNCTION   p_split  
(@c       varchar(2000),@split   varchar(20))
return   table
as
    declare   @t   table(CCC       varchar(20))      
        begin      
            while(charindex(@split,@c) <> 0)      
                begin      
                    insert       @t(CCC)       values       (substring(@c,1,charindex(@split,@c)-1))      
                    set       @c       =       stuff(@c,1,charindex(@split,@c), ' ')     --   删除指定长度的字符并在指定的起始点插入另一组字符  
                end      
            insert       @t(CCC)       values       (@c)         ---最后一个不含分隔的加进来
            return   (select   *   from   @t)
        end  

从网上找个存储过程,想转成自定义函数   ,可是生成的时候老是错误,不知道为何,错误提示如下,请帮我看看```

------解决方案--------------------
CREATE FUNCTION p_split
(@c varchar(2000),@split varchar(20))
returns @t table(CCC varchar(20))
as
begin
while(charindex(@split,@c) <> 0)
begin
insert @t(CCC) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c), ' ') -- 删除指定长度的字符并在指定的起始点插入另一组字符
end
insert @t(CCC) values (@c) ---最后一个不含分隔的加进来
return
end
GO
--調用
Select * From dbo.p_split( '1.2.3 ', '. ')
------解决方案--------------------
你看下聯機幫助的CREATE FUNCTION

返回是表變量的時候,return那裡特殊一些。


點帖子右上角的“管理”,你就知道怎麼給分了。