USE [BEA] GO /****** Object: UserDefinedFunction [dbo].[fnkt_get_tgdata_Data] Script Date: 06.10.2013 10:37:12 ******/ DROP FUNCTION [dbo].[fnkt_get_tgdata_Data] GO /****** Object: UserDefinedFunction [dbo].[fnkt_get_tgdata_Data] Script Date: 06.10.2013 10:37:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE FUNCTION [dbo].[fnkt_get_tgdata_Data] ( @itgnummer VARCHAR(255) ) RETURNS @t1 TABLE ( funktionsnummer VARCHAR(255) , funktionsbezeichnung VARCHAR(255) , plattform VARCHAR(255) , verwaltungmit VARCHAR(255) , verwaltungdurch VARCHAR(255) , berechtigungIn VARCHAR(255) , berechtigungfuer VARCHAR(255) , eigentuemer VARCHAR(255) ) AS BEGIN DECLARE @fstelle VARCHAR(255) DECLARE @fnr INT DECLARE @fbezeichnung VARCHAR(255) DECLARE @fnummer VARCHAR(255) DECLARE @parent INT DECLARE @tgtmp1 TABLE ( ID INT , Bezeichnung VARCHAR(255) , Beschreibung VARCHAR(255) , Sequenz INT , aktiv BIT , erstellt_am DATETIME , mutiert_am DATETIME , mutierer INT , typ VARCHAR(255) , MKey INT, Berechtigungstyp VARCHAR(255) ) DECLARE @tgt1 TABLE ( funktionsnummer VARCHAR(255) , funktionsbezeichnung VARCHAR(255) , plattform VARCHAR(255) , verwaltungmit VARCHAR(255) , verwaltungdurch VARCHAR(255) , berechtigungIn VARCHAR(255) , berechtigungfuer VARCHAR(255) , eigentuemer VARCHAR(255) ) DECLARE @sql VARCHAR(4096) DECLARE @tgtmp TABLE ( fstelle VARCHAR(255) ) INSERT @tgtmp SELECT dbo.Funktionstelle.Funktionsstelle FROM dbo.Personal INNER JOIN dbo.Personal_FunktionStelle ON dbo.Personal.Personalnr = dbo.Personal_FunktionStelle.PersonalNr INNER JOIN dbo.Funktionstelle ON dbo.Personal_FunktionStelle.FunktionStelleNr = dbo.Funktionstelle.FunktionstelleNr WHERE funktionstelle.aktiv=1 and personal_funktionstelle.aktiv=1 and tgnummer = @itgnummer DECLARE xx CURSOR FOR SELECT fstelle FROM @tgtmp OPEN xx FETCH NEXT FROM xx INTO @fnummer WHILE @@FETCH_STATUS = 0 BEGIN SELECT @fnr = funktionstellenr FROM funktionstelle WHERE funktionsstelle = @fnummer INSERT @tgt1 SELECT DISTINCT * FROM dbo.fnkt_get_Report_Data(@fnr) FETCH NEXT FROM xx INTO @fnummer END CLOSE xx DEALLOCATE xx DECLARE @tg VARCHAR(255) DECLARE @name VARCHAR(255) DECLARE @tgtg TABLE ( tgnummer VARCHAR(255) , NAME VARCHAR(255) ) INSERT @tgtg SELECT dbo.Personal.TGNummer, dbo.personal.name FROM dbo.Personal WHERE tgnummer=@itgnummer UPDATE @tgt1 SET funktionsnummer = tgnummer, funktionsbezeichnung = name FROM @tgtg INSERT @t1 SELECT DISTINCT * FROM @tgt1 ORDER BY verwaltungdurch, plattform, verwaltungmit RETURN END GO