存储过程实现无限级分类(2)2011-03-19 博客园 兴百放删除的存储过程CREATE PROCEDURE sp_Column_Delete ( @Column_ID int ) AS Declare @Err As int Set @Err = 0 Begin Tran --首先查询该节点下是否有子节点 Select Column_ID From Tb_Column Where Parent_ID = @Column_ID IF @@RowCount<>0 Begin Set @Err = 1 Goto theEnd End
--获取该节点的Column_Order,为了删除后整理其他记录的顺序 Declare @Column_Order As int Select @Column_Order = Column_Order From Tb_Column Where Column_ID = @Column_ID IF @Column_Order Is NUll Begin Set @Err =2 Goto theEnd End
--更新其他记录的Column_Order Update Tb_Column Set Column_Order = Column_Order -1 Where Column_Order >@Column_Order IF @@Error<>0 Begin Set @Err =3 Goto theEnd End
--删除操作 Delete From Tb_Column Where Column_ID=@Column_ID IF @@Error<>0 Begin Set @Err =4 Goto theEnd End
--更新其他记录的Column_ID --Update Tb_Column Set Column_ID= Column_ID - 1 Where Column_ID >@Column_ID --IF @@Error<>0 -- Begin -- Set @Err =5 -- Goto theEnd -- End
theEnd: IF @Err = 0 Begin Commit Tran Return 0 --删除成功 End Else Begin IF @Err=1 Begin Rollback Tran Return 1 --有子节点 End Else Begin Rollback Tran Return 2--未知错误 End End GO