如何在存储过程中实现向上搜索
我有一个tree表
有nodeID、parentID、nodeText、nodeIndex等字段
问题1
需要根据传入参数nodeID(对应“子节点3”)得到它所有父亲节点的名称,
形成如:父节点>>子节点1>>子节点2>>子节点3
问题2
nodeIndex 为同级目录自动增加1
我是在添加时用程序实现
现在想直接在添加的存储过程中实现。要不要用触发器
问题点数:0、回复次数:8Top
1 楼txlicenhe(马可)回复于 2004-09-04 09:54:17 得分 0
1:搜索一下吧,太多这种贴子了。
2:要触发器。Top
2 楼yrlxm()回复于 2004-09-04 13:29:33 得分 0
搜索?关键词,请具体些Top
3 楼yrlxm()回复于 2004-09-04 13:42:37 得分 0
sorry 查过了,我需要的返回类型是文本,不是表。请指教Top
4 楼gwycsdn()回复于 2004-09-06 11:49:34 得分 0
邹建的:
CREATE function f_getparentid(@id char(36))
returns @re table(id char(36))
as
begin
declare @pid int
select @pid=pid from rule_Contents where id=@id
while @pid<>0
begin
insert into @re values(@pid)
select @pid=pid from rule_Contents where id=@pid
end
return
end
Top
5 楼charmgjj(杰)回复于 2004-09-06 13:09:53 得分 0
认真学习Top
6 楼yrlxm()回复于 2004-09-06 14:16:29 得分 0
邹建的返回类型是表格,我需要的是文字Top
7 楼wcccc1(小猪义义)回复于 2004-09-06 14:34:16 得分 0
CREATE function f_getparentid(@id char(4))
returns @re char(200)
as
begin
declare @pid char(4)
select @pid=pid from rule_Contents where id=@id
while @pid<>0
begin
select @re=@re+@pid
select @pid=pid from rule_Contents where id=@pid
end
return
end
这样基本上就行了.不过得根据你的ID的数据类型和返回最大路径和确定@re的长度,根据实际情况自己改改Top
8 楼wcccc1(小猪义义)回复于 2004-09-06 14:36:16 得分 0
判断条件,
while @pid<>
这里放你树根的父结果,你自己在数据库里定义的.不一定是0可能是NULL什么的.看你怎么定的了.Top




