You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ITSM/.svn/pristine/a3/a3098128482835f6c7d4bd39960...

226 lines
21 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Lizenzstruktur_suche] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_get_Lizenzstruktur_suche]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Lizenzstruktur_suche] Script Date: 02.12.2016 09:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
-- =============================================
-- Author: <Stefan Hutter>
-- Create date: <13.01.2008>
-- Description: <Auslesen der Struktur (inkl. Kategorien) der Applikationsverwaltung anhand eines Suchbegriffs>
-- =============================================
CREATE PROCEDURE [dbo].[sp_get_Lizenzstruktur_suche]
@suchstring varchar(255),
@mitarbeiternr int,
@nuraktive int=0,
@alphasort int=0,
@suche int=0
AS
if @suchstring='' set @suche=0
CREATE TABLE #tmpx(
[Lizenznr] [int] ,
[bezeichnung] [varchar] (255) null,
[parentid] [int] null,
[SecurityLevelNr] [int] null,
[aktiv] [bit] null,
[strukturelement] [bit] null,
[Treffer] [varchar] (1) null,
) ON [DEFAULT]
CREATE TABLE #tmpd(
[Lizenznr] [int] ,
[bezeichnung] [varchar] (255) null,
[parentid] [int] null,
[SecurityLevelNr] [int] null,
[aktiv] [bit] null,
[strukturelement] [bit] null,
[Treffer] [varchar] (1) null,
) ON [DEFAULT]
-- Rootentry für die Treeaufbereitung in der Applikation
insert #tmpd (Lizenznr, bezeichnung, parentid, aktiv) values(0,'Root',null,1)
declare @appnr int
declare @appbez varchar(50)
declare @appprnt int
declare @anr int
declare @bez varchar(50)
declare @pid int
declare @snr int
declare @aktiv bit
declare @knr int
declare @ste int
declare @ste1 int
set @appprnt = -1
-----------------------------------------------------------------------------------------
-- Erster Loop über die Applikationen, welche den entsprechenden Suchbegriff beinhalten
-----------------------------------------------------------------------------------------
set @suchstring='%' + @suchstring + '%'
insert #tmpx
SELECT DISTINCT
dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement, '*' AS Treffer
FROM dbo.Lizenzschluessel FULL OUTER JOIN
dbo.Lizenzkauf FULL OUTER JOIN
dbo.LizenzVertragselementApplikation ON dbo.Lizenzkauf.Vertragselementapplikationnr = dbo.LizenzVertragselementApplikation.LizenzVEApplNr FULL OUTER JOIN
dbo.Vertragselement FULL OUTER JOIN
dbo.VertragselementApplikation FULL OUTER JOIN
dbo.Applikation ON dbo.VertragselementApplikation.Applikationnr = dbo.Applikation.ApplikationNr ON
dbo.Vertragselement.Vertragselementnr = dbo.VertragselementApplikation.Vertragselementnr ON
dbo.LizenzVertragselementApplikation.VertragselementApplikationNr = dbo.VertragselementApplikation.VertragselementApplikationnr FULL OUTER JOIN
dbo.Lizenz ON dbo.LizenzVertragselementApplikation.Lizenznr = dbo.Lizenz.LizenzNr ON dbo.Lizenzschluessel.Lizenzkaufnr = dbo.Lizenzkauf.LizenzkaufNr
WHERE (dbo.Lizenz.Bezeichnung LIKE @suchstring) OR
(dbo.LizenzVertragselementApplikation.Bemerkung LIKE @suchstring) OR
(dbo.Lizenz.Beschreibung LIKE @suchstring) OR
(dbo.VertragselementApplikation.Bemerkung LIKE @suchstring) OR
(dbo.Vertragselement.Bezeichnung LIKE @suchstring) OR
(dbo.Vertragselement.Beschreibung LIKE @suchstring) OR
(dbo.Lizenzkauf.KGNummer LIKE @suchstring) OR
(dbo.Lizenzkauf.SAPNummer LIKE @suchstring) OR
(dbo.Lizenzkauf.Bemerkung LIKE @suchstring) OR
(dbo.Applikation.Bezeichnung LIKE @suchstring) OR
(dbo.Lizenzschluessel.Lizenzschluessel LIKE @suchstring) OR
(dbo.Lizenzschluessel.Bemerkung LIKE @suchstring)
insert #tmpx SELECT DISTINCT
dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement, '*' AS Treffer
FROM dbo.Vertragselement INNER JOIN
dbo.VertragselementApplikation ON dbo.Vertragselement.Vertragselementnr = dbo.VertragselementApplikation.Vertragselementnr INNER JOIN
dbo.Vertragspartner ON dbo.Vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN
dbo.Applikation ON dbo.VertragselementApplikation.Applikationnr = dbo.Applikation.ApplikationNr INNER JOIN
dbo.Lizenz INNER JOIN
dbo.LizenzVertragselementApplikation ON dbo.Lizenz.LizenzNr = dbo.LizenzVertragselementApplikation.Lizenznr ON
dbo.VertragselementApplikation.VertragselementApplikationnr = dbo.LizenzVertragselementApplikation.VertragselementApplikationNr
WHERE (dbo.Vertragselement.Bezeichnung LIKE @suchstring) OR
(dbo.Vertragspartner.NameZ1 LIKE @suchstring) OR
(dbo.Applikation.Bezeichnung LIKE @suchstring)
-- SELECT DISTINCT dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement, '*' AS Treffer
--FROM dbo.Applikation INNER JOIN
-- dbo.VertragselementApplikation ON dbo.Applikation.ApplikationNr = dbo.VertragselementApplikation.Applikationnr INNER JOIN
-- dbo.Vertragspartner INNER JOIN
-- dbo.Vertragselement ON dbo.Vertragspartner.VertragspartnerNr = dbo.Vertragselement.VertragspartnerNr ON
-- dbo.VertragselementApplikation.Vertragselementnr = dbo.Vertragselement.Vertragselementnr INNER JOIN
-- dbo.LizenzVertragselementApplikation INNER JOIN
-- dbo.Lizenz ON dbo.LizenzVertragselementApplikation.Lizenznr = dbo.Lizenz.LizenzNr ON
-- dbo.VertragselementApplikation.VertragselementApplikationnr = dbo.LizenzVertragselementApplikation.VertragselementApplikationNr
--WHERE dbo.lizenz.bezeichnung like @suchstring or dbo.lizenz.beschreibung like @suchstring or
-- dbo.Vertragselement.Bezeichnung like @suchstring or dbo.Applikation.Bezeichnung like @suchstring or dbo.Vertragspartner.NameZ1 like @suchstring
if @nuraktive=1 begin
delete from #tmpx where aktiv<>1
end
if @nuraktive=0 begin
delete from #tmpx where aktiv<>0
end
declare xc cursor for
select [lizenznr], [bezeichnung],[parentid],[SecurityLevelNr],[aktiv], strukturelement from #tmpx
open xc
fetch next from xc into @appnr, @appbez, @pid, @snr, @aktiv, @ste
while @@fetch_status=0 begin
-----------------------------------------------------------------------------------------
-- Zweiter Loop über die Einträge der obesten Ebene der Lizenzen
-----------------------------------------------------------------------------------------
declare yc cursor for
select lizenznr, bezeichnung, parentid, securitylevelnr, aktiv, strukturelement from lizenz
where Lizenznr=@appnr
open yc
fetch next from yc into @anr, @bez, @pid, @snr, @aktiv , @ste1
while @@fetch_status=0 begin
insert #tmpd(Lizenznr, bezeichnung, parentid, securitylevelnr, aktiv, strukturelement)
values (@anr, @bez, @appprnt, @snr, @aktiv,@ste1)
-----------------------------------------------------------------------------------------
-- Je Applikation die untergeordneten Applikationen/Module auslesen
-----------------------------------------------------------------------------------------
--execute dbo.sp_get_applstruktur_down @anr,1, @anr
execute dbo.sp_get_lizenzstruktur_up @anr,1
fetch next from yc into @anr, @bez, @pid, @snr, @aktiv , @ste1
end
close yc
deallocate yc
set @appprnt = @appprnt - 1
fetch next from xc into @appnr, @appbez, @pid, @snr, @aktiv, @ste
end
close xc
deallocate xc
-----------------------------------------------------------------------------------------
-- Daten zurück geben und temporäre Tabelle löschen
-----------------------------------------------------------------------------------------
delete from #tmpd where Lizenznr is null
insert #tmpd (lizenznr, bezeichnung, parentid, aktiv) values(0,'Root',null,1)
--update #tmpd set strukturelement=0
delete from #tmpd where parentid<0
if @alphasort = 1 begin
update #tmpd set parentid=0 where parentid<0
delete from #tmpd where Lizenznr < 0
if @suche=1 begin
update #tmpd set treffer='*' where [lizenznr] in (select [Lizenznr] from #tmpx)
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end else begin
select distinct Lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end
drop table #tmpd
return
end
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end else begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end
drop table #tmpd
return
end
if @suche=1 begin
update #tmpd set treffer='*' where lizenznr in (select lizenznr from #tmpx)
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
end else begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
end
drop table #tmpd
return
end
if @nuraktive=0 begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
end else begin
select distinct lizenznr, bezeichnung, parentid, aktiv, strukturelement,Treffer from #tmpd order by bezeichnung
-- select distinct applikationsnr, bezeichnung, parentid, lic, aktiv from #tmpd where aktiv=1 order by bezeichnung
end
drop table #tmpd
return
GO