fetch next from childnodes into @childnode
while (@@fetch_status <> -1)--判断记录集是否成功打开
begin
if (@@fetch_status <> -2)
begin
--递归调用
exec deletenode @childnode
end
fetch next from childnodes into @childnode
end
close childnodes
deallocate childnodes
--代码执行到这里,可以确定@nodeid不再有子节点,现在,我们删除它
delete from treeview where id = @nodeid
end;
当然,这是一种比较低效的设计,每一个将要删除的节点都要执行一次delete,比较有效率的方法是多深入一层,操作当前节点的子节点。有兴趣的读者可以一试。
查询:树状表的查询是最有趣的内容之一。当然仅仅查出某一个节点的信息没有太大的意思,我们希望的是得到从当前节点一直向下(通常是到最底层)的完整子树。这同样需要一个递归。让我们从一个归纳法游戏开始,事先,我们先在treeview中插入以下数据:
|
id |
pid |
data |
|
---------- |
---------- |
---------- |
|
root |
root |
root |
|
n11 |
root |
node1-1
本文关键:数据库, SQL 语言, SQL Story, 树状结构
相关方案
|