--创建某版面遍历上级目录的存储过程
CREATE PROCEDURE TraverseByName
@name varchar(30) --版面名称
AS
declare @i int --级别循环变量
declare @str varchar(30)--临时字符串变量
set @str=@name--首先设定要查询版面名称的初值
select @i=版面级别 from 版面表--获得版面级别
where 版面名称=@str
set @i=@i-1
create table #tmptable--创建临时表,存放各个版面id
(
iid int IDENTITY (1, 1),--临时自动编号,用于排序
itemname varchar(30)
)
while(@i>0)--循环读取上级id
begin
select @str=版面名称 from 版面表
where id
in(select 上级版面id from 版面表
where 版面名称=@str)
insert into #tmptable(itemname) values(@str)
set @i=@i-1
end
--按级别从高到低列出上级版面名称
select itemname from #tmptable order by iid desc
drop table #tmptable
|