Now you could try it yourself:

--First, we create a inline-table function which returns a table

Create Function dbo.ufnFunctionTest (@param int, @param1 int)

returns table

AS

RETURN

(

select 1 as id

)


--Then, we want to alter it to a multi-statement table-valued function,

--and we will get an error here

alter Function dbo.ufnFunctionTest (@param int, @param1 int)

returns @tt table

(

id int

)

begin

insert into @tt values (1)

return

end
if you really want to "alter" the type of your function, actually you need to drop it first, then create a new one.
解决方法:先删除ufnFunctionTest ,再创建ufnFunctionTest 。
http://www.cnblogs.com/xingyukun/archive/2008/05/21/1203711.html