<p>有这样一个需求,单击删除TreeView中某个选中的节点时,要求把选中的节点本身与选中节点的子节点(直接子节点和孙子节点)同时也删除掉。首先想到的是递归实现。可是数据库递归。尼玛。不会啊啊啊~~ 下面附上自己的解决方法,有更好的,烦请以评论方式提供。现假设删除我的文档子节点。那么最后的结果应该只剩下Mid为0和14的两条记录。附上我的解决方法。createprocusp_digui@parentidnvarchar(50)asbegindeclare@selfidnvarchar(50)set@selfid=@parentiddeclare@preDelTbltable(delidnvarchar(50))declare@tbltable(tempidnvarchar(50))insertinto@tblvalues(@parentid)declare@countintset@count=0--中转临时表declare@tempTbltable(tidnvarchar(50))while(1=1)begin--查询传递的一组parendId的直接子元素个数,为0则直接跳出select@count=count(*)fromtblTestwhereParentIdin(selecttempidfrom@tbl)if(@count=0)beginbreakendelsebegin--清空中专临时表数据delete@tempTbl--把parendId的直接子元素插入到待删除表中insertinto@preDelTblselectmidfromtblTestwhereParentIdin(selecttempidfrom@tbl)--保存本次的直接子元素到临时表,提供给下一次循环使用insertinto@tempTblselectmidfromtblTestwhereParentIdin(selecttempidfrom@tbl)delete@tblinsertinto@tblselecttidfrom@tempTblendend--selectdelidfrom@preDelTblunionselect@selfiddeletefromtblTestwhereMidin(selectdelidfrom@preDelTblunionselect@selfid)end</p>