您的位置:首页 > 数据库

sql 生成菜单列表形菜单(作为笔记记录在这里)

2013-03-27 23:14 246 查看
l给你一个例子,跟这个差不多:

CREATE TABLE T(ID INT ,PID INT)

INSERT INTO T SELECT 1,0

UNION ALL SELECT 2,0

UNION ALL SELECT 3,1

UNION ALL SELECT 4,1

UNION ALL SELECT 5,2

UNION ALL SELECT 6,4

UNION ALL SELECT 7,3

UNION ALL SELECT 8,4

GO

--测试数据

CREATE FUNCTION F(@ID INT)

RETURNS VARCHAR(20)

AS

BEGIN

DECLARE @R VARCHAR(20)

SET @R=@ID

WHILE ISNULL(@ID,'')<>''

BEGIN

SELECT @R=CAST(PID AS VARCHAR(20))+'.'+@R FROM T WHERE
ID=@ID

SELECT @ID=PID FROM T WHERE ID=@ID

END

RETURN @R

END

GO

--生成目录

CREATE FUNCTION F2(@F VARCHAR(20))

RETURNS VARCHAR(20)

BEGIN

DECLARE @R VARCHAR(20)

SET @R=''

SET @F=SUBSTRING(@F,4,LEN(@F))

WHILE CHARINDEX('.',@F,1)<>0

BEGIN

SET @F=SUBSTRING(@F,CHARINDEX('.',@F,1)+1,LEN(@F))

SET @R='-'+@R

END

RETURN @R

END

GO

--生成前缀符号

SELECT DBO.F2(DBO.F(ID))+CAST(ID AS VARCHAR) FROM T ORDER BY DBO.F(ID)

GO

--结果

DROP TABLE T

DROP FUNCTION F

DROP FUNCTION F2

----------------------------------------------------以下为结果集--------------------------------------------------------------

1

-3

--7

-4

--6

--8

2

-5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐