关于sql server无限级分类查询SQL

[ 来源:http://www.it55.com | 作者: | 时间:2007-09-16 | 收藏 | 推荐 ] 【

/***创建表****/
CREATE TABLE [dbo].[Tree] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [PID] [int] NULL ,
    [Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]

精美韩国模版下载http://www.it55.com

/****创建自定义函数****/
CREATE FUNCTION dbo.fGetTreeTable
 (
 @ID int= null
 )
RETURNS @Tab TABLE(ID int, PID int, Name varchar(10), Lev int)--返回结果的表结构
AS
 BEGIN
  Declare @lev int
  Set @lev=0
 
  While @lev=0 or @@ROWCount>0
  Begin
   Set @Lev=@Lev+1
   Insert @Tab(ID, PID, Name, Lev)
   Select ID, PID, Name, @Lev From Tree Where (@Lev=1 and ((PID=@ID) or (@ID is null and PID is null))) or (PID in (Select ID From @Tab Where Lev=@Lev-1)) IT资讯之家 http://www.it55.com
   order by ID
  End
  RETURN
 END
 直接查询Select * from dbo.fGetTreeTable(null)就可以输入所有记录。

免费网页模版下载http://www.it55.com

(编辑:IT资讯之家 www.it55.com

返回顶部
 

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]