关于如何用存储过程递归删除tree树表数据的问题

tianzi_zc 2010-06-17 11:19:44
编号 目录名称 备注信息 父编号
1 公共文挡 对整个系统的整体说明 0
2 管理制度 公司的整个管理规范 0
3 部门文档 各部门的文件分类 0
4 研发部 研发部相关资料 3
5 部门员工 介绍所有研发部员工的基本信息。 3
6 所有项目 所有可用的项目汇总。 1
7 ACCP员工基本资料 对整个系统的整体说明 6
8 MyOffice MyOffice。 6
9 游戏点卡销售系统 毕业设计项目 6
10 MyOffice说明文档 说明文档 6
11 游戏点卡销售系统说明书 说明书 9
12 Java项目 Java毕业设计项目 6
13 ACCP5.0产品发布 所有即将发布的产品 7
---------------------------------

大家好,以上是参考数据:假如我删除一个节点时如何同时删除该节点的相应子节点,以及子节点的子节点....依次类推。
基于这个问题我想肯定是用递归包括用过程递归或写sql函数递归算法,可就是不知道怎么 写,请大家执教和提示一下,谢谢。

-----------------------
创建表的代码如下:
create table Catalogue
(
Cid int identity(1,1),
CName nvarchar(100),
Remark nvarchar(1000),
ParentId nvarchar(10)
)
go
insert into Catalogue values('公共文挡','对整个系统的整体说明',0)
insert into Catalogue values('管理制度','公司的整个管理规范',0)
insert into Catalogue values('部门文档','各部门的文件分类',0)
insert into Catalogue values('研发部','研发部相关资料',3)
insert into Catalogue values('部门员工介绍','介绍所有研发部员工的基本信息。',3)
insert into Catalogue values('所有项目','所有可用的项目汇总。',1)
insert into Catalogue values('ACCP员工基本资料','对整个系统的整体说明',6)
insert into Catalogue values('MyOffice','MyOffice。',6)
insert into Catalogue values('游戏点卡销售系统','毕业设计项目',6)
insert into Catalogue values('MyOffice说明文档','说明文档',6)
insert into Catalogue values('游戏点卡销售系统说明书','说明书',9)
insert into Catalogue values('Java项目','Java毕业设计项目',6)
insert into Catalogue values('ACCP5.0产品发布','所有即将发布的产品',7)
select * from catalogue
...全文
159 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianzi_zc 2010-06-17
  • 打赏
  • 举报
回复
谢谢了!
永生天地 2010-06-17
  • 打赏
  • 举报
回复
delete a from Catalogue a,dbo.f_getC(0) b where a.cid=b.id
全部删除
永生天地 2010-06-17
  • 打赏
  • 举报
回复
delete a from Catalogue a,dbo.f_getC(0) b where a.cid=b.id
全部删除
永生天地 2010-06-17
  • 打赏
  • 举报
回复
--查所有子结点
if object_id('f_getC') is not null drop function f_getC
go
create function f_getC(@id int)
returns @re table(id int,level int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.Cid,@l from Catalogue as a,@re as b
where b.id=a.parentid and b.level=@l-1
end
return
end
go

select * from Catalogue a,dbo.f_getC(3) b where a.cid=b.id
/*
Cid CName Remark ParentId id level
----------- ---------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ----------- -----------
3 部门文档 各部门的文件分类 0 3 0
4 研发部 研发部相关资料 3 4 1
5 部门员工介绍 介绍所有研发部员工的基本信息。 3 5 1

(所影响的行数为 3 行)
*/

delete a from Catalogue a,dbo.f_getC(3) b where a.cid=b.id

--再查询一次,就知道了
目录 出版说明 献词 简介 第1章 综述 数据结构和算法能起到什么作用? 数据结构的概述 算法的概述 一些定义 面向对象编程 软件工程 对于C++程序员的Java Java数据结构的类库 小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序 选择排序 插入排序 对象排序 几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 变位字 递归的二分查找 汉诺(Hanoi)塔问题 归并排序 消除递归 一些有趣的递归应用 小结 问题 实验 编程作业 第7章 高级排序 希尔排序 划分 快速排序 基数排序 小结 问题 实验 编程作业 第8章 二叉树 为什么使用二叉树? 树的术语 一个类比 二叉搜索树如何工作 查找节点 插入一个节点 遍历树 查找最大值和最小值 删除节点 二叉树的效率 用数组表示树 重复关键字 完整的tree.java程序 哈夫曼(Huffman)编码 小结 问题 实验 编程作业 第9章 红-黑树 第10章 2-3-4树和外部存储 第11章 哈希表 第12章 堆 第13章 图 第14章 带权图 第15章 应用场合

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧