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/94/9430c75de59c949b69d13487d93...

154 lines
12 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Lizenzstruktur] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_get_Lizenzstruktur]
GO
/****** Object: StoredProcedure [dbo].[sp_get_Lizenzstruktur] 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]
@mitarbeiternr int,
@nuraktive int=0,
@alphasort int=0,
@applikationnr int=0,
@lizenztyp int=0
AS
CREATE TABLE #tmpd(
[Lizenznr] [int] ,
[bezeichnung] [varchar] (255) null,
[parentid] [int] null,
[SecurityLevelNr] [int] null,
[aktiv] [bit] null,
[Strukturelement] bit null,
) ON [DEFAULT]
-- Rootentry für die Treeaufbereitung in der Applikation
insert #tmpd (lizenznr, bezeichnung, parentid, aktiv) values(0,'Root',null,1)
declare @liznr int
declare @lizbez varchar(50)
declare @lizprnt int
declare @anr int
declare @bez varchar(50)
declare @pid int
declare @snr int
declare @aktiv bit
declare @knr int
declare @st int
set @lizprnt = -1
-----------------------------------------------------------------------------------------
-- Erster Loop über die Applikationen, welche den entsprechenden Suchbegriff beinhalten
-----------------------------------------------------------------------------------------
SELECT DISTINCT dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement
into #tmpx
from dbo.lizenz where lizenznr=-999999
if @applikationnr <> 0 begin
Insert #tmpx
SELECT DISTINCT dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement
FROM dbo.VertragselementApplikation INNER JOIN
dbo.LizenzVertragselementApplikation ON
dbo.VertragselementApplikation.VertragselementApplikationnr = dbo.LizenzVertragselementApplikation.VertragselementApplikationNr INNER JOIN
dbo.Lizenz ON dbo.LizenzVertragselementApplikation.Lizenznr = dbo.Lizenz.LizenzNr
WHERE (dbo.VertragselementApplikation.Applikationnr = @applikationnr) and dbo.Lizenz.SecurityLevelNrin (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr))
end else begin
insert #tmpx
SELECT DISTINCT dbo.Lizenz.lizenznr, dbo.lizenz.Bezeichnung, dbo.lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement
FROM dbo.Lizenz
where dbo.Lizenz.SecurityLevelNrin (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr))
end
if @lizenztyp=2 begin
delete from #tmpx where aktiv<>1
end
if @lizenztyp=3 begin
delete from #tmpx where aktiv<>0
end
if @lizenztyp=4 begin
truncate table #tmpx
set @applikationnr=0
insert #tmpx select dbo.Lizenz.LizenzNr, dbo.Lizenz.Bezeichnung, dbo.Lizenz.ParentID, dbo.Lizenz.SecurityLevelNr, dbo.Lizenz.Aktiv, dbo.Lizenz.Strukturelement
from lizenz
where LizenzNr not in (select LizenzNr from LizenzVertragselementApplikation where Lizenznr>0) and dbo.Lizenz.SecurityLevelNrin (select SecurityLevelNr from dbo.Get_SecurityLevelTab(@mitarbeiternr))
and aktiv=1
end
declare xc cursor for
select * from #tmpx
open xc
fetch next from xc into @liznr, @lizbez, @pid, @snr, @aktiv ,@st
while @@fetch_status=0 begin
insert #tmpd(Lizenznr, bezeichnung, parentid, securitylevelnr, aktiv,Strukturelement)
values (@liznr, @lizbez, @pid, @snr, @aktiv,@st)
execute dbo.sp_get_Lizenzstruktur_up @Liznr,1
fetch next from xc into @Liznr, @Lizbez, @pid, @snr, @aktiv,@st
end
close xc
deallocate xc
select * into #tmpxx from #tmpd
declare @rc int
select @rc=COUNT(*) from #tmpxx
if @applikationnr <> 0 and @rc > 0 begin
declare xc cursor for
select * from #tmpxx
open xc
fetch next from xc into @liznr, @lizbez, @pid, @snr, @aktiv ,@st
while @@fetch_status=0 begin
insert #tmpd(Lizenznr, bezeichnung, parentid, securitylevelnr, aktiv,Strukturelement)
values (@liznr, @lizbez, @pid, @snr, @aktiv,@st)
execute dbo.sp_get_Lizenzstruktur_down @Liznr,1
fetch next from xc into @Liznr, @Lizbez, @pid, @snr, @aktiv,@st
end
close xc
deallocate xc
end
-----------------------------------------------------------------------------------------
-- Daten zurück geben und temporäre Tabelle löschen
-----------------------------------------------------------------------------------------
insert #tmpd (Lizenznr, bezeichnung, parentid, aktiv) values(0,'Root',null,1)
if @alphasort = 1 begin
update #tmpd set parentid=0 where parentid<0
delete from #tmpd where Lizenznr < 0
if @nuraktive=0 begin
select distinct Lizenznr, bezeichnung, parentid, aktiv, strukturelement,'' as Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end else begin
select distinct Lizenznr, bezeichnung, parentid, aktiv, strukturelement,'' as Treffer from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end
drop table #tmpd
return
end
update #tmpd set strukturelement=0 where strukturelement is null
if @nuraktive=0 begin
select distinct Lizenznr, bezeichnung, parentid, aktiv, strukturelement from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end else begin
select distinct Lizenznr, bezeichnung, parentid, aktiv, strukturelement from #tmpd where ltrim(bezeichnung) <> '' order by bezeichnung
end
drop table #tmpd
GO