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:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<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

