Function Return Table

来源:互联网 发布:linux远程连接oracle 编辑:程序博客网 时间:2024/05/01 23:36

--Function Return Table

create function f_cid(
@ClassName varchar(10) --要查询的类别名(如果类别名会重复,改用NClassID
)returns @re table(NClassID int,level int)
as
begin
 declare @l int
 set @l=0
 insert @re select NClassID,@l
 from Class
 where ClassName=@ClassName
 while @@rowcount>0
 begin
  set @l=@l+1
  insert @re select a.NClassID,@l
  from Class a,@re b
  where a.ClassID=b.NClassID and b.level=@l-1
 end
 return
end
go

--调用函数实现查询
select a.* ,b.ArticleID,b.Title
from Class a,Article b,f_cid('体育') a1 --查询体育及下面的所有子类
where a.NClassID=a1.NClassID  and b.NClassID=a1.NClassID
      and b.ArticleID in( select top 10 ArticleID from Article
                     where NClassID=a1.NClassID)