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/db/db910ba8fdf8f74baa6d0327063...

92 lines
6.8 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_get_struktur] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_get_struktur]
GO
/****** Object: StoredProcedure [dbo].[sp_get_struktur] Script Date: 02.12.2016 09:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_get_struktur] @per DATETIME
AS
BEGIN
SET NOCOUNT ON;
SELECT 'OE_' + LTRIM(RTRIM(STR(OeNr))) AS ID, 'OE_' + LTRIM(RTRIM(STR(ParentId))) AS ParentID, Bezeichnung, 0 AS ImageIndex,
Beschreibung AS ErweiterteSuche, sortierung AS sort
INTO #tmp1
FROM dbo.OE WHERE aktiv=1
ORDER BY Sortierung
INSERT #tmp1 ( id, parentid, bezeichnung, imageindex, ErweiterteSuche, sort )
VALUES ( 'OE_0', NULL, 'Root', 0, ' ',1 )
INSERT #tmp1
SELECT 'MA_' + LTRIM(RTRIM(STR(dbo.MA.MANr))) AS ID, 'OE_-1' AS ParentID,
dbo.MA.Name + ' ' + dbo.MA.Vorname AS Bezeichnung, 1 AS ImageIndex, dbo.MA.Name + ' ' + dbo.MA.Vorname AS ErweiterteSuche, 0 AS sort
FROM dbo.MA
LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr
WHERE ma.aktiv=1 AND dbo.ma.manr NOT IN ( SELECT manr
FROM dbo.MADetails
WHERE aktiv = 1 )
DECLARE @mnr INT
DECLARE @rc INT
DECLARE xc CURSOR
FOR
SELECT manr
FROM ma
WHERE aktiv = 1 AND gueltig_bis >=@per
OPEN xc
FETCH NEXT FROM xc INTO @mnr
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @rc = COUNT(*)
FROM dbo.MADetails
WHERE manr = @mnr AND aktiv=1
AND Gueltig_ab <= @per
IF @rc > 0
BEGIN
INSERT #tmp1
SELECT TOP 1
'MA_' + LTRIM(RTRIM(STR(dbo.MA.MANr))) AS ID,
'OE_' + ISNULL(LTRIM(RTRIM(STR(dbo.MADetails.OENr))), '-1') AS ParentID,
+dbo.MA.Name + ' ' + dbo.MA.Vorname AS Bezeichnung, 1 AS ImageIndex,
dbo.MA.Name + ' ' + dbo.MA.Vorname AS ErweiterteSuche, dbo.ma.sortierung AS sort
FROM dbo.MA
LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr
WHERE dbo.MADetails.manr = @mnr AND dbo.MADetails.Aktiv=1
AND Gueltig_ab <= @per
ORDER BY Gueltig_ab desc
END
FETCH NEXT FROM xc INTO @mnr
END
CLOSE xc
DEALLOCATE xc
SELECT *
FROM #tmp1
ORDER BY parentid,sort, Bezeichnung
DROP TABLE #tmp1
END
GO