这个也改一下,去掉那个TABLE变量
CREATE FUNCTION findall (myid int)
RETURNS @list table (id int) AS
BEGIN
declare @i int
insert into @list select @myid
set @i=0
DECLARE findid CURSOR FOR select id from department where belong=@myid
Open findid
While @@FETCH_STATUS = 0
begin
FETCH next FROM findid into @i
if @@FETCH_STATUS = 0
insert into @list select @i union select id from dbo.findall(@i)
end
CLOSE findid
DEALLOCATE findid
CREATE FUNCTION findall (@table nvarchar(50),@myid int)
RETURNS @list table (id int) AS
BEGIN
declare @i int
insert into @list select @myid
set @i=0
DECLARE findid CURSOR FOR select id from department where father=@myid
Open findid
While @@FETCH_STATUS = 0
begin
FETCH next FROM findid into @i
if @@FETCH_STATUS = 0
insert into @list select @i union select id from dbo.findall(@i)
end
CLOSE findid
DEALLOCATE findid