SQL Story(十一)--树状表游戏[3]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 ccat 的 blog

       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, 树状结构
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top