USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[my_servicekatalog_struktur] Script Date: 02.12.2016 09:08:54 ******/ DROP PROCEDURE [dbo].[my_servicekatalog_struktur] GO /****** Object: StoredProcedure [dbo].[my_servicekatalog_struktur] Script Date: 02.12.2016 09:08:54 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE proc [dbo].[my_servicekatalog_struktur] @mitarbeiternr int, @checkstate int AS CREATE TABLE #tmpd( [servicekatalognr] [int] , [bezeichnung] [varchar] (255) null, [parentid] [int] , [securitylevelnr] [int], [aktiv] bit ) ON [DEFAULT] declare @tmp int declare xc cursor for select servicekatalognr from servicekatalog where parentid=0 and securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) open xc fetch next from xc into @tmp while @@fetch_status=0 begin execute dbo.my_servicekatalog_struktur_down @tmp,1 fetch next from xc into @tmp end close xc deallocate xc insert #tmpd (servicekatalognr, bezeichnung, parentid,securitylevelnr,aktiv) values(0,'Service-Katalog',null,0,1) --delete from #tmpd where securitylevelnr < ------------------------------------------------------------------- -- Nur gem. Checkstate gewählte Einträge zurück geben -- 0 = nur inaktive Einträge -- 1 = nur aktive Einträge -- 3 = alle Einträge -> keine Einschränkung in der Resultattabelle ------------------------------------------------------------------- if @checkstate = 0 begin-- inaktiv delete from #tmpd where (aktiv=1 and servicekatalognr > 0 and servicekatalognr not in (select parentid from #tmpd where aktiv=0)) -- select * from #tmpd select * into #tmpe from #tmpd declare yc cursor for select parentid from #tmpe open yc fetch next from yc into @tmp while @@fetch_status=0 begin print @tmp execute dbo.my_servicekatalog_struktur_up @tmp,1 fetch next from yc into @tmp end close yc deallocate yc delete from #tmpd where servicekatalognr is null drop table #tmpe end if @checkstate = 1 begin -- aktiv delete from #tmpd where aktiv=0 and servicekatalognr > 0 end select distinct * from #tmpd drop table #tmpd GO