微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL SERVER 函数递归取树状结构

表结构:
USE [Test]
GO
/****** 对象: Table [dbo].[PersonTree] 脚本日期: 09/25/2009 00:17:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PersonTree](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[ParentID] [int] NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

sql函数

CREATE FUNCTION dbo.getPerson(@personID INT)
RETURNS @table TABLE(id INT,pname VARCHAR(50))
AS
BEGIN
--INSERT INTO @table SELECT id,pname FROM PersonTree WHERE parentid = @personID
DECLARE @id INT
DECLARE @pname VARCHAR(50)
DECLARE myCursor CURSOR FOR
SELECT id,pname FROM PersonTree WHERE parentid = @personID
OPEN myCursor
FETCH NEXT FROM myCursor INTO @id,@pname;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @table VALUES(@id,@pname);
INSERT INTO @table SELECT * FROM dbo.getPerson(@id);
FETCH NEXT FROM myCursor INTO @id,@pname;
END

CLOSE myCursor
DEALLOCATE myCursor

RETURN
END

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐