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.
154 lines
12 KiB
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
|