USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[sp_vertragsuebersicht_get_details] Script Date: 02.12.2016 09:08:53 ******/ DROP PROCEDURE [dbo].[sp_vertragsuebersicht_get_details] GO /****** Object: StoredProcedure [dbo].[sp_vertragsuebersicht_get_details] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE proc [dbo].[sp_vertragsuebersicht_get_details] @Elementtyp varchar(255), @EntryRoot int, @Vertragspartnernr int, @mitarbeiternr int, @suchstring varchar(255) as CREATE TABLE #tmpd( [vertragselementnr] [int] , [bezeichnung] [varchar] (255) null, [parentid] [int] null, [vertragstypnr] [int], [aktiv] [bit] null, [vertragselementnrursprung] [int] null , [basevertragstypnr] [int] null, [key] [int] IDENTITY(1,1) NOT NULL, [level] int null, [loopcnt] int null, ) ON [DEFAULT] declare @tmp int -- Alle untergeordneten Elemente eines Vertragselementes if @Elementtyp = "Vertragselement" begin declare xc cursor for select Vertragselementnr from vertragselement where (vertragselementnr=@EntryRoot and securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) and dbo.search_vertragselement(vertragselementnr, @suchstring)=1 ) -- 2009-06-26 - Erweiterung, dass auch das angewählte Element mit den Details angezeigt wird or vertragselementnr=@EntryRoot open xc fetch next from xc into @tmp while @@fetch_status=0 begin execute dbo.sp_vertragsuebersicht_get_struktur_down @tmp,1, 0, 0,0 fetch next from xc into @tmp end close xc deallocate xc end if @Elementtyp="Vertragstyp" begin -- Elemente eines ausgew„hlten Partner if @Vertragspartnernr<>0 begin declare xctyp cursor for select Vertragselementnr from vertragselement where vertragstypnr=@entryroot and vertragspartnernr=@vertragspartnernr and securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) and dbo.search_vertragselement(vertragselementnr, @suchstring)=1 open xctyp fetch next from xctyp into @tmp while @@fetch_status=0 begin execute dbo.sp_vertragsuebersicht_get_struktur_down @tmp,1, 0, 0,0 fetch next from xctyp into @tmp end close xctyp deallocate xctyp end else begin -- Elemente aller Partner declare xctyp1 cursor for select Vertragselementnr from vertragselement where vertragstypnr=@entryroot and securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) and dbo.search_vertragselement(vertragselementnr, @suchstring)=1 open xctyp1 fetch next from xctyp1 into @tmp while @@fetch_status=0 begin execute dbo.sp_vertragsuebersicht_get_struktur_down @tmp,1, 0, 0,0 fetch next from xctyp1 into @tmp end close xctyp1 deallocate xctyp1 end end if @elementtyp="Vertragspartner" begin insert #tmpd (vertragselementnr, bezeichnung, parentid, vertragstypnr) select Vertragselementnr, '',0,0 from vertragselement where dbo.vertragselement.vertragspartnernr=@vertragspartnernr and securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) and dbo.search_vertragselement(vertragselementnr, @suchstring)=1 end if @suchstring='' begin SELECT distinct dbo.Vertragspartner.NameZ1 + ' ' + dbo.Vertragspartner.NameZ2 + ', ' + dbo.Vertragspartner.PLZ + ' ' + dbo.Vertragspartner.Ort AS Partner, dbo.Vertragstyp.Vertragstyp, dbo.view_vertragselement.*, dbo.view_vertragselement.Mutierer AS Expr1, dbo.mitarbeiter.name + ' ' + dbo.mitarbeiter.vorname + ', ' + dbo.mitarbeiter.tgnummer AS Mutierername FROM #tmpd INNER JOIN dbo.view_vertragselement INNER JOIN dbo.Vertragspartner ON dbo.view_vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN dbo.Vertragstyp ON dbo.view_vertragselement.VertragstypNr = dbo.Vertragstyp.Vertragstypnr ON #tmpd.vertragselementnr = dbo.view_vertragselement.Vertragselementnr INNER JOIN dbo.mitarbeiter ON dbo.view_vertragselement.Mutierer = dbo.mitarbeiter.mitarbeiternr --20091008 - nur berechtigte Objekte zurückgeben and dbo.view_vertragselement.securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) -- SELECT distinct dbo.Vertragspartner.NameZ1 + ' ' + dbo.Vertragspartner.NameZ2 + ', ' + dbo.Vertragspartner.PLZ + ' ' + dbo.Vertragspartner.Ort AS Partner, -- dbo.Vertragstyp.Vertragstyp, dbo.Vertragselement.*, dbo.Vertragselement.Mutierer AS Expr1, -- dbo.mitarbeiter.name + ' ' + dbo.mitarbeiter.vorname + ', ' + dbo.mitarbeiter.tgnummer AS Mutierername -- FROM #tmpd INNER JOIN -- dbo.Vertragselement INNER JOIN -- dbo.Vertragspartner ON dbo.Vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN -- dbo.Vertragstyp ON dbo.Vertragselement.VertragstypNr = dbo.Vertragstyp.Vertragstypnr ON -- #tmpd.vertragselementnr = dbo.Vertragselement.Vertragselementnr INNER JOIN -- dbo.mitarbeiter ON dbo.Vertragselement.Mutierer = dbo.mitarbeiter.mitarbeiternr end else begin SELECT distinct dbo.Vertragspartner.NameZ1 + ' ' + dbo.Vertragspartner.NameZ2 + ', ' + dbo.Vertragspartner.PLZ + ' ' + dbo.Vertragspartner.Ort AS Partner, dbo.Vertragstyp.Vertragstyp, dbo.view_vertragselement.*, dbo.view_vertragselement.Mutierer AS Expr1, dbo.mitarbeiter.name + ' ' + dbo.mitarbeiter.vorname + ', ' + dbo.mitarbeiter.tgnummer AS Mutierername FROM #tmpd INNER JOIN dbo.view_vertragselement INNER JOIN dbo.Vertragspartner ON dbo.view_vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN dbo.Vertragstyp ON dbo.view_vertragselement.VertragstypNr = dbo.Vertragstyp.Vertragstypnr ON #tmpd.vertragselementnr = dbo.view_vertragselement.Vertragselementnr INNER JOIN dbo.mitarbeiter ON dbo.view_vertragselement.Mutierer = dbo.mitarbeiter.mitarbeiternr where (dbo.search_vertragselement(dbo.view_vertragselement.vertragselementnr, @suchstring)=1 -- 2009-06-26 - Erweiterung, dass auch das angewählte Element mit den Details angezeigt wird or dbo.view_vertragselement.vertragselementnr = @entryroot) --20091008 - nur berechtigte Objekte zurückgeben and dbo.view_vertragselement.securitylevelnr in (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr)) end GO