DECLARE @dict TABLE (value VARCHAR(50),[level] int ) DECLARE @TYPEID NVARCHAR(50) DECLARE @LEVEL INT =0 INSERT @dict SELECT TYPEID,@LEVEL FROM DBO.BAS_WORKSHOP WHERE WID=@WID --参数值 WHILE EXISTS(SELECT * FROM dbo.BAS_WORKSHOP where parid in (select value from @dict where [level]=@LEVEL )) BEGIN set @LEVEL+=1; insert into @dict(value,[level]) select typeid,@LEVEL from dbo.BAS_WORKSHOP where parid in (select value from @dict where [level]=@LEVEL-1 ) END UPDATE DBO.BAS_WORKSHOP SET DELETED=1 WHERE TYPEID IN (select value from @dict where [level]>0)

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GP_DoStartStopWorkshop]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].GP_DoStartStopWorkshop
WID |
TypeID(ID) | DELETED | ParID(PID) |
27 | 00000 | 0 | root |
79 | 00001 | 0 | 00000 |
80 | 00002 | 0 | 00000 |
81 | 0000100001 | 0 | 00001 |