USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[sp_vertragsuebersicht_get_struktur_down] Script Date: 02.12.2016 09:08:53 ******/ DROP PROCEDURE [dbo].[sp_vertragsuebersicht_get_struktur_down] GO /****** Object: StoredProcedure [dbo].[sp_vertragsuebersicht_get_struktur_down] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE proc [dbo].[sp_vertragsuebersicht_get_struktur_down] @Root int, @imandant int, @vnr int, @tmpid int, @loopcnt int AS BEGIN SET NOCOUNT ON declare @vertragselementnr int, @bezeichnung varchar(255), @nr int, @parent int, @seclevel int, @aktiv bit select @bezeichnung=bezeichnung, @nr=vertragselementnr, @parent=parentid, @seclevel=securitylevelnr, @aktiv=aktiv, @vnr=vertragstypnr from vertragselement where vertragselementnr=@root if @tmpid<>-1 set @parent=@tmpid declare @cnt int select @cnt=count(*) from #tmpd where vertragselementnr=@nr if @cnt<1 insert into #tmpd (vertragselementnr, bezeichnung, parentid,vertragstypnr, aktiv,vertragselementnrursprung, level, loopcnt) values (@nr, @bezeichnung, @parent,@vnr*-100, @aktiv,@nr, @@nestlevel,@loopcnt) --insert into #tmpd (vertragselementnr, bezeichnung, parentid,vertragstypnr, aktiv, vertragselementnrursprung) values (@nr, @bezeichnung, @parent,@vnr, @aktiv, @nr) set @vertragselementnr=(select min (vertragselementnr) from vertragselement where parentid=@root) while @vertragselementnr is not null begin exec dbo.sp_vertragsuebersicht_get_struktur_down @vertragselementnr, 1, @vnr,-1, @loopcnt set @vertragselementnr=(select min (vertragselementnr) from dbo.vertragselement where parentid=@root and vertragselementnr>@vertragselementnr) end end GO