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.
226 lines
21 KiB
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
|