Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Title: AmbicaBI - Update script
- --Version from: 2.5.5
- --Version to: 2.5.6
- --Comment: jpr - kumulace hotfixů
- --EasyProject tasks:
- --Date: 13.06.2017
- --Generated by: jpr
- ---------------------------------------------------------------------------------------------------
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 1
- --Comment: upravy pro olap - custom dim fields
- --EasyProject tasks:
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 1
- GO
- IF NOT EXISTS (SELECT TOP 1 1 FROM amb.Plan4SParameters WHERE ParameterName = 'db_source_name') BEGIN
- INSERT INTO amb.Plan4SParameters VALUES ('db_source_name', (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'olap_source_db_name')+'_sources')
- END
- GO
- /****** Object: StoredProcedure [olap].[DimViewGenerator] Script Date: 30. 5. 2017 14:38:03 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER PROCEDURE [olap].[DimViewGenerator]
- AS
- BEGIN
- DECLARE
- @query varchar(max) = ''
- ,@code varchar(20)
- ,@name varchar(20)
- ,@MemberListId int
- DECLARE cml CURSOR FOR
- SELECT Id, Code, LOWER(Code) FROM p4s.MemberLists ORDER BY Id
- OPEN cml
- FETCH NEXT FROM cml INTO @MemberListId, @Code, @Name
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @query = '
- IF EXISTS (SELECT TOP 1 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ''VD_' + @Code + ''' AND TABLE_SCHEMA = ''olap'' AND TABLE_TYPE = ''VIEW'')
- DROP VIEW olap.VD_' + @Code
- EXEC (@query)
- SET @query = '
- CREATE VIEW olap.VD_' + @Code + '
- AS
- SELECT
- Id AS ' + @Name + '_id
- ,Code AS ' + @Name + '_code
- ,Name AS ' + @Name + '_name
- ,RTRIM(Name) + '' ('' + RTRIM(Code) + '')'' AS ' + @Name + '_olapname
- ,Fchar01 AS ' + @name + '_fchar01
- ,Fchar02 AS ' + @name + '_fchar02
- ,Fchar03 AS ' + @name + '_fchar03
- ,Fchar04 AS ' + @name + '_fchar04
- ,Fchar05 AS ' + @name + '_fchar05
- ,Fchar06 AS ' + @name + '_fchar06
- ,Fchar07 AS ' + @name + '_fchar07
- ,Fchar08 AS ' + @name + '_fchar08
- ,Fchar09 AS ' + @name + '_fchar09
- ,Fchar10 AS ' + @name + '_fchar10
- ,Fint01 AS ' + @name + '_fint01
- ,Fint02 AS ' + @name + '_fint02
- ,Fint03 AS ' + @name + '_fint03
- ,Fint04 AS ' + @name + '_fint04
- ,Fint05 AS ' + @name + '_fint05
- ,Fdate01 AS ' + @name + '_fdate01
- ,Fdate02 AS ' + @name + '_fdate02
- ,Fdate03 AS ' + @name + '_fdate03
- ,Fdate04 AS ' + @name + '_fdate04
- ,Fdate05 AS ' + @name + '_fdate05
- ,Ffloat01 AS ' + @name + '_ffloat01
- ,Ffloat02 AS ' + @name + '_ffloat02
- ,Ffloat03 AS ' + @name + '_ffloat03
- ,Ffloat04 AS ' + @name + '_ffloat04
- ,Ffloat05 AS ' + @name + '_ffloat05
- ,SortOrder
- FROM p4s.Members
- WHERE MemberListId = ' + CAST(@MemberListId AS varchar) + '
- UNION ALL
- SELECT 0,''n/a'',''Neuvedeno'', ''Neuvedeno'','''','''','''','''','''','''','''','''','''','''',0,0,0,0,0,1900-1-1,1900-1-1,1900-1-1,1900-1-1,1900-1-1,0,0,0,0,0,-1'
- --SET @query = '
- --CREATE VIEW olap.VD_' + @Code + '
- --AS
- --SELECT
- -- Id AS ' + @Name + '_id
- -- ,Code AS ' + @Name + '_code
- -- ,Name AS ' + @Name + '_name
- -- ,RTRIM(Name) + '' ('' + RTRIM(Code) + '')'' AS ' + @Name + '_olapname
- -- ,SortOrder
- --FROM p4s.Members
- --WHERE MemberListId = ' + CAST(@MemberListId AS varchar) + '
- --UNION ALL
- --SELECT 0,''n/a'',''Neuvedeno'', ''Neuvedeno'', -1'
- EXEC (@query)
- FETCH NEXT FROM cml INTO @MemberListId, @Code, @Name
- END
- CLOSE cml
- DEALLOCATE cml
- END
- GO
- IF EXISTS ( SELECT *
- FROM sysobjects
- WHERE id = object_id(N'[olap].[GetCustomDimFields]')
- and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
- BEGIN
- DROP PROCEDURE [olap].[GetCustomDimFields]
- END
- GO
- /****** Object: StoredProcedure [olap].[CreateCube] Script Date: 31. 5. 2017 13:18:58 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE [olap].[GetCustomDimFields]
- @DimCode nvarchar(124)
- AS
- -- =================================================
- -- Author: JPR
- -- Create date: 31.05.2017
- -- Description:
- --
- --
- --
- --
- -- Changelog:
- -- ================================================
- DECLARE
- @ProcedureName varchar(50) = 'GetCustomDimFields'
- BEGIN
- TRY
- select mli.Code,
- FieldName,
- mla.Name,
- Visible,
- case when FieldName like '%fchar%' then 'char'
- when FieldName like '%fint%' then 'int'
- when FieldName like '%fdate%' then 'datetime'
- when FieldName like '%ffloat%' then 'float'
- end as FieldType
- from p4s.MemberLabels mla
- join p4s.MemberLists mli
- on mli.Id = mla.MemberListId
- and Visible = 1
- and Code = @DimCode
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Podařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(@@IDENTITY AS INT)
- END
- TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Nepodařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(-@@IDENTITY AS INT)
- END CATCH
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 1
- --Comment: upravy pro olap - custom dim fields
- --EasyProject tasks:
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 2
- GO
- IF EXISTS ( SELECT *
- FROM sysobjects
- WHERE id = object_id(N'[olap].[GetCustomDimFields]')
- and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
- BEGIN
- DROP PROCEDURE [olap].[GetCustomDimFields]
- END
- GO
- /****** Object: StoredProcedure [olap].[CreateCube] Script Date: 31. 5. 2017 13:18:58 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE [olap].[GetCustomDimFields]
- @DimCode nvarchar(124)
- AS
- -- =================================================
- -- Author: JPR
- -- Create date: 31.05.2017
- -- Description:
- --
- --
- --
- --
- -- Changelog:
- -- ================================================
- DECLARE
- @ProcedureName varchar(50) = 'GetCustomDimFields'
- BEGIN
- TRY
- select mli.Code,
- FieldName,
- mla.Name,
- Visible,
- case when FieldName like '%fchar%' then 'char'
- when FieldName like '%fint%' then 'int'
- when FieldName like '%fdate%' then 'datetime'
- when FieldName like '%ffloat%' then 'float'
- end as FieldType
- from p4s.MemberLabels mla
- join p4s.MemberLists mli
- on mli.Id = mla.MemberListId
- and Visible = 1
- and Code = @DimCode
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Podařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(@@IDENTITY AS INT)
- END
- TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Nepodařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(-@@IDENTITY AS INT)
- END CATCH
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 3
- --Comment: upravy pro olap - custom dim fields
- --EasyProject tasks:
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 3
- GO
- IF EXISTS ( SELECT *
- FROM sysobjects
- WHERE id = object_id(N'[olap].[GetCustomDimFields]')
- and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
- BEGIN
- DROP PROCEDURE [olap].[GetCustomDimFields]
- END
- GO
- /****** Object: StoredProcedure [olap].[CreateCube] Script Date: 31. 5. 2017 13:18:58 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE [olap].[GetCustomDimFields]
- @DimCode nvarchar(124)
- AS
- -- =================================================
- -- Author: JPR
- -- Create date: 31.05.2017
- -- Description:
- --
- --
- --
- --
- -- Changelog:
- -- ================================================
- DECLARE
- @ProcedureName varchar(50) = 'GetCustomDimFields'
- BEGIN
- TRY
- select mli.Code,
- FieldName,
- mla.Name,
- Visible,
- case when FieldName like '%fchar%' then 'char'
- when FieldName like '%fint%' then 'int'
- when FieldName like '%fdate%' then 'datetime'
- when FieldName like '%ffloat%' then 'float'
- end as FieldType
- from p4s.MemberLabels mla
- join p4s.MemberLists mli
- on mli.Id = mla.MemberListId
- and Visible = 1
- and Code = @DimCode
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Podařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(@@IDENTITY AS INT)
- END
- TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Nepodařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(-@@IDENTITY AS INT)
- END CATCH
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 1
- --Comment: upravy pro olap - custom dim fields
- --EasyProject tasks:
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 4
- GO
- /****** Object: StoredProcedure [olap].[DimViewGenerator] Script Date: 30. 5. 2017 14:38:03 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER PROCEDURE [olap].[DimViewGenerator]
- AS
- BEGIN
- DECLARE
- @query varchar(max) = ''
- ,@code varchar(20)
- ,@name varchar(20)
- ,@MemberListId int
- DECLARE cml CURSOR FOR
- SELECT Id, Code, LOWER(Code) FROM p4s.MemberLists ORDER BY Id
- OPEN cml
- FETCH NEXT FROM cml INTO @MemberListId, @Code, @Name
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @query = '
- IF EXISTS (SELECT TOP 1 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ''VD_' + @Code + ''' AND TABLE_SCHEMA = ''olap'' AND TABLE_TYPE = ''VIEW'')
- DROP VIEW olap.VD_' + @Code
- EXEC (@query)
- SET @query = '
- CREATE VIEW olap.VD_' + @Code + '
- AS
- SELECT
- Id AS ' + @Name + '_id
- ,Code AS ' + @Name + '_code
- ,Name AS ' + @Name + '_name
- ,RTRIM(Name) + '' ('' + RTRIM(Code) + '')'' AS ' + @Name + '_olapname
- ,Fchar01 AS ' + @name + '_fchar01
- ,Fchar02 AS ' + @name + '_fchar02
- ,Fchar03 AS ' + @name + '_fchar03
- ,Fchar04 AS ' + @name + '_fchar04
- ,Fchar05 AS ' + @name + '_fchar05
- ,Fchar06 AS ' + @name + '_fchar06
- ,Fchar07 AS ' + @name + '_fchar07
- ,Fchar08 AS ' + @name + '_fchar08
- ,Fchar09 AS ' + @name + '_fchar09
- ,Fchar10 AS ' + @name + '_fchar10
- ,Fint01 AS ' + @name + '_fint01
- ,Fint02 AS ' + @name + '_fint02
- ,Fint03 AS ' + @name + '_fint03
- ,Fint04 AS ' + @name + '_fint04
- ,Fint05 AS ' + @name + '_fint05
- ,Fdate01 AS ' + @name + '_fdate01
- ,Fdate02 AS ' + @name + '_fdate02
- ,Fdate03 AS ' + @name + '_fdate03
- ,Fdate04 AS ' + @name + '_fdate04
- ,Fdate05 AS ' + @name + '_fdate05
- ,Ffloat01 AS ' + @name + '_ffloat01
- ,Ffloat02 AS ' + @name + '_ffloat02
- ,Ffloat03 AS ' + @name + '_ffloat03
- ,Ffloat04 AS ' + @name + '_ffloat04
- ,Ffloat05 AS ' + @name + '_ffloat05
- ,SortOrder
- FROM p4s.Members
- WHERE MemberListId = ' + CAST(@MemberListId AS varchar) + '
- UNION ALL
- SELECT 0,''n/a'',''Neuvedeno'', ''Neuvedeno'','''','''','''','''','''','''','''','''','''','''',0,0,0,0,0,1900-1-1,1900-1-1,1900-1-1,1900-1-1,1900-1-1,0,0,0,0,0,-1'
- --SET @query = '
- --CREATE VIEW olap.VD_' + @Code + '
- --AS
- --SELECT
- -- Id AS ' + @Name + '_id
- -- ,Code AS ' + @Name + '_code
- -- ,Name AS ' + @Name + '_name
- -- ,RTRIM(Name) + '' ('' + RTRIM(Code) + '')'' AS ' + @Name + '_olapname
- -- ,SortOrder
- --FROM p4s.Members
- --WHERE MemberListId = ' + CAST(@MemberListId AS varchar) + '
- --UNION ALL
- --SELECT 0,''n/a'',''Neuvedeno'', ''Neuvedeno'', -1'
- EXEC (@query)
- FETCH NEXT FROM cml INTO @MemberListId, @Code, @Name
- END
- CLOSE cml
- DEALLOCATE cml
- END
- GO
- IF EXISTS ( SELECT *
- FROM sysobjects
- WHERE id = object_id(N'[olap].[GetCustomDimFields]')
- and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
- BEGIN
- DROP PROCEDURE [olap].[GetCustomDimFields]
- END
- GO
- /****** Object: StoredProcedure [olap].[CreateCube] Script Date: 31. 5. 2017 13:18:58 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE [olap].[GetCustomDimFields]
- @DimCode nvarchar(124)
- AS
- -- =================================================
- -- Author: JPR
- -- Create date: 31.05.2017
- -- Description:
- --
- --
- --
- --
- -- Changelog:
- -- ================================================
- DECLARE
- @ProcedureName varchar(50) = 'GetCustomDimFields'
- BEGIN
- TRY
- select mli.Code,
- FieldName,
- mla.Name,
- Visible,
- case when FieldName like '%fchar%' then 'char'
- when FieldName like '%fint%' then 'int'
- when FieldName like '%fdate%' then 'datetime'
- when FieldName like '%ffloat%' then 'float'
- end as FieldType
- from p4s.MemberLabels mla
- join p4s.MemberLists mli
- on mli.Id = mla.MemberListId
- and Visible = 1
- and Code = @DimCode
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Podařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(@@IDENTITY AS INT)
- END
- TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Nepodařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(-@@IDENTITY AS INT)
- END CATCH
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 1
- --Comment: upravy pro olap - custom dim fields
- --EasyProject tasks:
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 5
- GO
- /****** Object: StoredProcedure [olap].[GetCustomDimFields] Script Date: 31. 5. 2017 15:24:54 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER PROCEDURE [olap].[GetCustomDimFields]
- @DimCode nvarchar(124)
- AS
- BEGIN
- DECLARE
- @ProcedureName varchar(50) = 'GetCustomDimFields'
- BEGIN
- TRY
- select mli.Code,
- lower(mli.Code)+'_'+FieldName as FieldName,
- mla.Name,
- Visible,
- case when FieldName like '%fchar%' then 'char'
- when FieldName like '%fint%' then 'int'
- when FieldName like '%fdate%' then 'datetime'
- when FieldName like '%ffloat%' then 'float'
- end as FieldType
- from p4s.MemberLabels mla
- join p4s.MemberLists mli
- on mli.Id = mla.MemberListId
- and Visible = 1
- and Code = @DimCode
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Podařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(@@IDENTITY AS INT)
- END
- TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Nepodařilo se získat volitelná pole k dimenzi', GetDate())
- RETURN CAST(-@@IDENTITY AS INT)
- END CATCH
- END
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 6
- --Comment: rozsireni importnich procedur
- --EasyProject tasks: #3021
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 6
- GO
- /****** Object: UserDefinedTableType [import].[SourceMembers] Script Date: 1. 6. 2017 10:23:40 ******/
- DROP TYPE [import].[SourceMembers]
- CREATE TYPE [import].[SourceMembers] AS TABLE(
- [Code] [varchar](20) NOT NULL,
- [Name] [nvarchar](255) NOT NULL,
- [SortOrder] [int] NULL,
- [Fchar01] [varchar](20) NULL,
- [Fchar02] [varchar](20) NULL,
- [Fchar03] [varchar](20) NULL,
- [Fchar04] [varchar](20) NULL,
- [Fchar05] [varchar](20) NULL,
- [Fchar06] [varchar](50) NULL,
- [Fchar07] [varchar](50) NULL,
- [Fchar08] [varchar](50) NULL,
- [Fchar09] [varchar](50) NULL,
- [Fchar10] [varchar](50) NULL,
- [Fint01] [int] NULL,
- [Fint02] [int] NULL,
- [Fint03] [int] NULL,
- [Fint04] [int] NULL,
- [Fint05] [int] NULL,
- [Fdate01] [datetime] NULL,
- [Fdate02] [datetime] NULL,
- [Fdate03] [datetime] NULL,
- [Fdate04] [datetime] NULL,
- [Fdate05] [datetime] NULL,
- [Ffloat01] [float] NULL,
- [Ffloat02] [float] NULL,
- [Ffloat03] [float] NULL,
- [Ffloat04] [float] NULL,
- [Ffloat05] [float] NULL
- )
- GO
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ---- =================================================
- ---- Author: PJE
- ---- Create date: podzim 2016
- ---- Description: Procedura importuje prvky jednoho memberlistu
- ---- Changelog: 2017-02-13 PJE Oprava
- ---- =================================================
- ALTER PROCEDURE [import].[MembersFromSource]
- @MemberListId int = 0
- ,@BlockMissing bit = 0
- ,@RunSourceTest bit = 1
- AS
- BEGIN
- DECLARE
- @MemberListCode varchar(20)
- ,@tblSource import.SourceMembers
- ,@query varchar(max)
- ,@db_source_name varchar(255)
- -- pro testy
- --,@MemberListId int = 2
- --,@BlockMissing bit = 0
- --,@RunSourceTest bit = 1
- DECLARE @TestResult TABLE (SourceTestResult bit)
- DECLARE @source_test TABLE (name varchar(255) null)
- DECLARE @changes TABLE(MemberCode varchar(20), Change varchar(20));
- SET @MemberListCode = (SELECT Code FROM p4s.MemberLists WHERE Id = @MemberListId)
- SET @db_source_name = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'db_source_name')
- -- kontrola vstupniho rozhrani
- IF @RunSourceTest = 1
- BEGIN
- SET @query = @db_source_name + '.ambica.SourceTestVDM @DimCode = ''' + @MemberListCode + ''', @Preview = 0'
- EXEC (@query)
- SET @query = 'SELECT TOP 1 TestStatus FROM ' + @db_source_name + '.ambica.SourceTestResults WHERE SourceName = ''VDM_' + @MemberListCode + ''' ORDER BY LastTestDatetime DESC'
- DELETE FROM @TestResult
- INSERT INTO @TestResult EXEC (@query)
- IF (SELECT SourceTestResult FROM @TestResult) = 0
- BEGIN
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'ERROR',0, 0, 0
- ,'Chyba vstupního rozhraní'
- ,GetDate()
- )
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- --SELECT - @@IDENTITY --18.8.2016 JPE přidána návratová hodnota (musi byt pres SELECT, nestaci RETURN 1 :-( )
- RETURN
- END
- END
- BEGIN TRY
- -- naplneni tabulky ze zdroje
- SET @query = 'SELECT Code, Name, SortOrder, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05
- FROM ' + @db_source_name + '.dbo.VDM_' + @MemberListCode
- INSERT INTO @tblSource (Code, Name, SortOrder, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05)
- EXEC(@query)
- ;WITH cte_members
- AS ( SELECT *
- FROM p4s.Members
- WHERE MemberListId = @MemberListId
- )
- MERGE cte_members AS t
- USING @tblSource AS s
- ON t.Code = s.Code
- -- stavajici prvky na zdroji - updatujeme pouze pokud
- -- a) jedna se o importovane prvky
- -- b) na zdroji neni NULL
- -- c) zdroj nese nejakou zmenu
- WHEN MATCHED AND t.Imported = 1
- AND ( t.Name <> s.Name
- OR t.SortOrder <> s.SortOrder
- OR ISNULL(t.Fchar01,'') <> ISNULL(s.Fchar01 , t.Fchar01 )
- OR ISNULL(t.Fchar02,'') <> ISNULL(s.Fchar02 , t.Fchar02 )
- OR ISNULL(t.Fchar03,'') <> ISNULL(s.Fchar03 , t.Fchar03 )
- OR ISNULL(t.Fchar04,'') <> ISNULL(s.Fchar04 , t.Fchar04 )
- OR ISNULL(t.Fchar05,'') <> ISNULL(s.Fchar05 , t.Fchar05 )
- OR ISNULL(t.Fchar06,'') <> ISNULL(s.Fchar06 , t.Fchar06 )
- OR ISNULL(t.Fchar07,'') <> ISNULL(s.Fchar07 , t.Fchar07 )
- OR ISNULL(t.Fchar08,'') <> ISNULL(s.Fchar08 , t.Fchar08 )
- OR ISNULL(t.Fchar09,'') <> ISNULL(s.Fchar09 , t.Fchar09 )
- OR ISNULL(t.Fchar10,'') <> ISNULL(s.Fchar10 , t.Fchar10 )
- OR ISNULL(t.Fint01,0) <> ISNULL(s.Fint01 , t.Fint01 )
- OR ISNULL(t.Fint02,0) <> ISNULL(s.Fint02 , t.Fint02 )
- OR ISNULL(t.Fint03,0) <> ISNULL(s.Fint03 , t.Fint03 )
- OR ISNULL(t.Fint04,0) <> ISNULL(s.Fint04 , t.Fint04 )
- OR ISNULL(t.Fint05,0) <> ISNULL(s.Fint05 , t.Fint05 )
- OR ISNULL(t.Fdate01,1900-01-01) <> ISNULL(s.Fdate01 , t.Fdate01 )
- OR ISNULL(t.Fdate02,1900-01-01) <> ISNULL(s.Fdate02 , t.Fdate02 )
- OR ISNULL(t.Fdate03,1900-01-01) <> ISNULL(s.Fdate03 , t.Fdate03 )
- OR ISNULL(t.Fdate04,1900-01-01) <> ISNULL(s.Fdate04 , t.Fdate04 )
- OR ISNULL(t.Fdate05,1900-01-01) <> ISNULL(s.Fdate05 , t.Fdate05 )
- OR ISNULL(t.Ffloat01,0) <> ISNULL(s.Ffloat01 , t.Ffloat01 )
- OR ISNULL(t.Ffloat02,0) <> ISNULL(s.Ffloat02 , t.Ffloat02 )
- OR ISNULL(t.Ffloat03,0) <> ISNULL(s.Ffloat03 , t.Ffloat03 )
- OR ISNULL(t.Ffloat04,0) <> ISNULL(s.Ffloat04 , t.Ffloat04 )
- OR ISNULL(t.Ffloat05,0) <> ISNULL(s.Ffloat05 , t.Ffloat05 )
- )
- THEN UPDATE
- SET
- Name = s.Name
- ,ShortName = CASE WHEN t.ShortName = LEFT(t.Name,50) THEN LEFT(s.Name, 50) ELSE LEFT(t.Name,50) END
- ,SortOrder = s.SortOrder
- ,Fchar01 = ISNULL(s.Fchar01 , t.Fchar01 )
- ,Fchar02 = ISNULL(s.Fchar02 , t.Fchar02 )
- ,Fchar03 = ISNULL(s.Fchar03 , t.Fchar03 )
- ,Fchar04 = ISNULL(s.Fchar04 , t.Fchar04 )
- ,Fchar05 = ISNULL(s.Fchar05 , t.Fchar05 )
- ,Fchar06 = ISNULL(s.Fchar06 , t.Fchar06 )
- ,Fchar07 = ISNULL(s.Fchar07 , t.Fchar07 )
- ,Fchar08 = ISNULL(s.Fchar08 , t.Fchar08 )
- ,Fchar09 = ISNULL(s.Fchar09 , t.Fchar09 )
- ,Fchar10 = ISNULL(s.Fchar10 , t.Fchar10 )
- ,Fint01 = ISNULL(s.Fint01 , t.Fint01 )
- ,Fint02 = ISNULL(s.Fint02 , t.Fint02 )
- ,Fint03 = ISNULL(s.Fint03 , t.Fint03 )
- ,Fint04 = ISNULL(s.Fint04 , t.Fint04 )
- ,Fint05 = ISNULL(s.Fint05 , t.Fint05 )
- ,Fdate01 = ISNULL(s.Fdate01 , t.Fdate01 )
- ,Fdate02 = ISNULL(s.Fdate02 , t.Fdate02 )
- ,Fdate03 = ISNULL(s.Fdate03 , t.Fdate03 )
- ,Fdate04 = ISNULL(s.Fdate04 , t.Fdate04 )
- ,Fdate05 = ISNULL(s.Fdate05 , t.Fdate05 )
- ,Ffloat01 = ISNULL(s.Ffloat01 , t.Ffloat01 )
- ,Ffloat02 = ISNULL(s.Ffloat02 , t.Ffloat02 )
- ,Ffloat03 = ISNULL(s.Ffloat03 , t.Ffloat03 )
- ,Ffloat04 = ISNULL(s.Ffloat04 , t.Ffloat04 )
- ,Ffloat05 = ISNULL(s.Ffloat05 , t.Ffloat05 )
- -- nove prvky na zdroji
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (MemberListId, Code, Name, ShortName, SortOrder, Imported, Blocked, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05)
- VALUES (@MemberListId, s.Code, s.Name, LEFT(s.Name, 50), s.SortOrder, 1, 0, s.Fchar01, s.Fchar02, s.Fchar03, s.Fchar04, s.Fchar05, s.Fchar06, s.Fchar07, s.Fchar08, s.Fchar09, s.Fchar10, s.Fint01, s.Fint02, s.Fint03, s.Fint04, s.Fint05, s.Fdate01, s.Fdate02, s.Fdate03, s.Fdate04, s.Fdate05, s.Ffloat01, s.Ffloat02, s.Ffloat03, s.Ffloat04, s.Ffloat05)
- -- stavajici prvky chybi na zdroji a jsou oznaceny jako importovane --> oznacime jako Blocked
- WHEN NOT MATCHED BY SOURCE AND @BlockMissing = 1 AND t.Imported = 1 AND t.Blocked = 0
- THEN UPDATE SET Blocked = 1
- OUTPUT Inserted.Code, $action INTO @changes;
- ;
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'OK'
- ,(SELECT COUNT(*) FROM @changes WHERE Change = 'UPDATE')
- ,(SELECT COUNT(*) FROM @changes WHERE Change = 'INSERT')
- ,0 -- TODO - je nutno si do tabulky @changes dat pole Blocked a upravit podminky pro pocty zde
- ,'Import proběhl v pořádku'
- ,GetDate()
- )
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- --SELECT @@IDENTITY --18.8.2016 JPE přidán RETURN s návratovou hodnotou
- RETURN
- END TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'ERROR',0, 0, 0
- ,'Nespecifikovaná chyba importu'
- ,GetDate()
- )
- --SELECT - @@IDENTITY
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- RETURN --18.8.2016 JPE přidána návratová hodnota
- END CATCH
- END
- GO
- USE [AmbicaBI_sources]
- GO
- /****** Object: View [ambica].[_VDM_EMPTY] Script Date: 1. 6. 2017 10:10:24 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER VIEW [ambica].[_VDM_EMPTY]
- AS
- SELECT
- -- povinne pole nesouci znakovy klic prvku daneho seznamu prvku (napr. kod strediska, kod produktu,...)
- Code AS Code --[varchar](20) NOT NULL,
- -- povinne pole pro nazev
- ,Name AS Name --[nvarchar](255) NOT NULL,
- -- povinne pole pro urceni poradi prvku pri trideni --[int] NOT NULL,
- -- jsou zde uvedeny vzory nekolika zpusobu, je potreba pouzit pouze JEDEN
- -- vzor kodu, kdy kod prvku je puvodne ciselny a ma se podle nej tridit
- -- neda se tomu 100% verit, proto je zabudovan test
- -- ty, co nejsou ciselne, maji poradi 0, budou na zacatku a uzivatele to donuti probelm resit
- ,CASE WHEN ISNUMERIC(Code) = 1 THEN CAST(Code AS int) ELSE 0 END AS SortOrder
- -- vzor kodu pro nagenerovani trideni dle kodu (znakove)
- --,CAST(ROW_NUMBER() OVER( ORDER BY Code) AS int) AS SortOrder
- -- vzor kodu pro nagenerovani trideni dle kodu (ciselne)
- --,CAST(ROW_NUMBER() OVER( ORDER BY CASE WHEN ISNUMERIC(Code) = 1 THEN CAST(Code AS int) ELSE 0 END) AS int) AS SortOrder
- -- vzor kodu pro nagenerovani trideni dle nazvu
- --,CAST(ROW_NUMBER() OVER( ORDER BY Name) AS int) AS SortOrder
- -- volna pole pro ulozeni znakove hodnoty do delky 20 - zbytek bude oriznut zprava
- ,CAST(NULL AS varchar(20)) AS Fchar01 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar02 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar03 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar04 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar05 --[varchar](20) NULL,
- -- volna pole pro ulozeni znakove hodnoty do delky 50 - zbytek bude oriznut zprava
- ,CAST(NULL AS varchar(50)) AS Fchar06 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar07 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar08 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar09 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar10 --[varchar](50) NULL,
- -- volna pole pro ulozeni ciselne hodnoty typu integer
- ,CAST(NULL AS int) AS Fint01 --[int] NULL,
- ,CAST(NULL AS int) AS Fint02 --[int] NULL,
- ,CAST(NULL AS int) AS Fint03 --[int] NULL,
- ,CAST(NULL AS int) AS Fint04 --[int] NULL,
- ,CAST(NULL AS int) AS Fint05 --[int] NULL
- -- volna pole pro ulozeni ciselne hodnoty typu integer
- ,CAST(NULL AS datetime) AS Fdate01 --[int] NULL,
- ,CAST(NULL AS datetime) AS Fdate02 --[int] NULL,
- ,CAST(NULL AS datetime) AS Fdate03 --[int] NULL,
- ,CAST(NULL AS datetime) AS Fdate04 --[int] NULL,
- ,CAST(NULL AS datetime) AS Fdate05 --[int] NULL
- -- volna pole pro ulozeni ciselne hodnoty typu integer
- ,CAST(NULL AS float) AS Ffloat01 --[int] NULL,
- ,CAST(NULL AS float) AS Ffloat02 --[int] NULL,
- ,CAST(NULL AS float) AS Ffloat03 --[int] NULL,
- ,CAST(NULL AS float) AS Ffloat04 --[int] NULL,
- ,CAST(NULL AS float) AS Ffloat05 --[int] NULL
- -- zde doplnit skutecnou zdrojovou tabulku
- FROM dbo._DM_EMPTY
- GO
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 7
- --Comment: rozsireni importnich procedur
- --EasyProject tasks: #3021
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 7
- GO
- /****** Object: UserDefinedTableType [import].[SourceMembers] Script Date: 1. 6. 2017 10:23:40 ******/
- DROP TYPE [import].[SourceMembers]
- CREATE TYPE [import].[SourceMembers] AS TABLE(
- [Code] [varchar](20) NOT NULL,
- [Name] [nvarchar](255) NOT NULL,
- [ShortName] [nvarchar](50) NOT NULL,
- [SortOrder] [int] NULL,
- [Fchar01] [varchar](20) NULL,
- [Fchar02] [varchar](20) NULL,
- [Fchar03] [varchar](20) NULL,
- [Fchar04] [varchar](20) NULL,
- [Fchar05] [varchar](20) NULL,
- [Fchar06] [varchar](50) NULL,
- [Fchar07] [varchar](50) NULL,
- [Fchar08] [varchar](50) NULL,
- [Fchar09] [varchar](50) NULL,
- [Fchar10] [varchar](50) NULL,
- [Fint01] [int] NULL,
- [Fint02] [int] NULL,
- [Fint03] [int] NULL,
- [Fint04] [int] NULL,
- [Fint05] [int] NULL,
- [Fdate01] [datetime] NULL,
- [Fdate02] [datetime] NULL,
- [Fdate03] [datetime] NULL,
- [Fdate04] [datetime] NULL,
- [Fdate05] [datetime] NULL,
- [Ffloat01] [float] NULL,
- [Ffloat02] [float] NULL,
- [Ffloat03] [float] NULL,
- [Ffloat04] [float] NULL,
- [Ffloat05] [float] NULL
- )
- GO
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ---- =================================================
- ---- Author: PJE
- ---- Create date: podzim 2016
- ---- Description: Procedura importuje prvky jednoho memberlistu
- ---- Changelog: 2017-02-13 PJE Oprava
- ---- =================================================
- ALTER PROCEDURE [import].[MembersFromSource]
- @MemberListId int = 0
- ,@BlockMissing bit = 0
- ,@RunSourceTest bit = 1
- AS
- BEGIN
- DECLARE
- @MemberListCode varchar(20)
- ,@tblSource import.SourceMembers
- ,@query varchar(max)
- ,@db_source_name varchar(255)
- -- pro testy
- --,@MemberListId int = 2
- --,@BlockMissing bit = 0
- --,@RunSourceTest bit = 1
- DECLARE @TestResult TABLE (SourceTestResult bit)
- DECLARE @source_test TABLE (name varchar(255) null)
- DECLARE @changes TABLE(MemberCode varchar(20), Change varchar(20));
- SET @MemberListCode = (SELECT Code FROM p4s.MemberLists WHERE Id = @MemberListId)
- SET @db_source_name = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'db_source_name')
- -- kontrola vstupniho rozhrani
- IF @RunSourceTest = 1
- BEGIN
- SET @query = @db_source_name + '.ambica.SourceTestVDM @DimCode = ''' + @MemberListCode + ''', @Preview = 0'
- EXEC (@query)
- SET @query = 'SELECT TOP 1 TestStatus FROM ' + @db_source_name + '.ambica.SourceTestResults WHERE SourceName = ''VDM_' + @MemberListCode + ''' ORDER BY LastTestDatetime DESC'
- DELETE FROM @TestResult
- INSERT INTO @TestResult EXEC (@query)
- IF (SELECT SourceTestResult FROM @TestResult) = 0
- BEGIN
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'ERROR',0, 0, 0
- ,'Chyba vstupního rozhraní'
- ,GetDate()
- )
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- --SELECT - @@IDENTITY --18.8.2016 JPE přidána návratová hodnota (musi byt pres SELECT, nestaci RETURN 1 :-( )
- RETURN
- END
- END
- BEGIN TRY
- -- naplneni tabulky ze zdroje
- SET @query = 'SELECT Code, Name, ShortName, SortOrder, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05
- FROM ' + @db_source_name + '.dbo.VDM_' + @MemberListCode
- INSERT INTO @tblSource (Code, Name, ShortName, SortOrder, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05)
- EXEC(@query)
- ;WITH cte_members
- AS ( SELECT *
- FROM p4s.Members
- WHERE MemberListId = @MemberListId
- )
- MERGE cte_members AS t
- USING @tblSource AS s
- ON t.Code = s.Code
- -- stavajici prvky na zdroji - updatujeme pouze pokud
- -- a) jedna se o importovane prvky
- -- b) na zdroji neni NULL
- -- c) zdroj nese nejakou zmenu
- WHEN MATCHED AND t.Imported = 1
- AND ( t.Name <> s.Name
- OR t.ShortName <> s.ShortName
- OR t.SortOrder <> s.SortOrder
- OR ISNULL(t.Fchar01,'') <> ISNULL(s.Fchar01 , t.Fchar01 )
- OR ISNULL(t.Fchar02,'') <> ISNULL(s.Fchar02 , t.Fchar02 )
- OR ISNULL(t.Fchar03,'') <> ISNULL(s.Fchar03 , t.Fchar03 )
- OR ISNULL(t.Fchar04,'') <> ISNULL(s.Fchar04 , t.Fchar04 )
- OR ISNULL(t.Fchar05,'') <> ISNULL(s.Fchar05 , t.Fchar05 )
- OR ISNULL(t.Fchar06,'') <> ISNULL(s.Fchar06 , t.Fchar06 )
- OR ISNULL(t.Fchar07,'') <> ISNULL(s.Fchar07 , t.Fchar07 )
- OR ISNULL(t.Fchar08,'') <> ISNULL(s.Fchar08 , t.Fchar08 )
- OR ISNULL(t.Fchar09,'') <> ISNULL(s.Fchar09 , t.Fchar09 )
- OR ISNULL(t.Fchar10,'') <> ISNULL(s.Fchar10 , t.Fchar10 )
- OR ISNULL(t.Fint01,0) <> ISNULL(s.Fint01 , t.Fint01 )
- OR ISNULL(t.Fint02,0) <> ISNULL(s.Fint02 , t.Fint02 )
- OR ISNULL(t.Fint03,0) <> ISNULL(s.Fint03 , t.Fint03 )
- OR ISNULL(t.Fint04,0) <> ISNULL(s.Fint04 , t.Fint04 )
- OR ISNULL(t.Fint05,0) <> ISNULL(s.Fint05 , t.Fint05 )
- OR ISNULL(t.Fdate01,1900-01-01) <> ISNULL(s.Fdate01 , t.Fdate01 )
- OR ISNULL(t.Fdate02,1900-01-01) <> ISNULL(s.Fdate02 , t.Fdate02 )
- OR ISNULL(t.Fdate03,1900-01-01) <> ISNULL(s.Fdate03 , t.Fdate03 )
- OR ISNULL(t.Fdate04,1900-01-01) <> ISNULL(s.Fdate04 , t.Fdate04 )
- OR ISNULL(t.Fdate05,1900-01-01) <> ISNULL(s.Fdate05 , t.Fdate05 )
- OR ISNULL(t.Ffloat01,0) <> ISNULL(s.Ffloat01 , t.Ffloat01 )
- OR ISNULL(t.Ffloat02,0) <> ISNULL(s.Ffloat02 , t.Ffloat02 )
- OR ISNULL(t.Ffloat03,0) <> ISNULL(s.Ffloat03 , t.Ffloat03 )
- OR ISNULL(t.Ffloat04,0) <> ISNULL(s.Ffloat04 , t.Ffloat04 )
- OR ISNULL(t.Ffloat05,0) <> ISNULL(s.Ffloat05 , t.Ffloat05 )
- )
- THEN UPDATE
- SET
- Name = s.Name
- ,ShortName = CASE WHEN t.ShortName = LEFT(t.Name,50) THEN LEFT(s.Name, 50) ELSE LEFT(t.Name,50) END
- ,SortOrder = s.SortOrder
- ,Fchar01 = ISNULL(s.Fchar01 , t.Fchar01 )
- ,Fchar02 = ISNULL(s.Fchar02 , t.Fchar02 )
- ,Fchar03 = ISNULL(s.Fchar03 , t.Fchar03 )
- ,Fchar04 = ISNULL(s.Fchar04 , t.Fchar04 )
- ,Fchar05 = ISNULL(s.Fchar05 , t.Fchar05 )
- ,Fchar06 = ISNULL(s.Fchar06 , t.Fchar06 )
- ,Fchar07 = ISNULL(s.Fchar07 , t.Fchar07 )
- ,Fchar08 = ISNULL(s.Fchar08 , t.Fchar08 )
- ,Fchar09 = ISNULL(s.Fchar09 , t.Fchar09 )
- ,Fchar10 = ISNULL(s.Fchar10 , t.Fchar10 )
- ,Fint01 = ISNULL(s.Fint01 , t.Fint01 )
- ,Fint02 = ISNULL(s.Fint02 , t.Fint02 )
- ,Fint03 = ISNULL(s.Fint03 , t.Fint03 )
- ,Fint04 = ISNULL(s.Fint04 , t.Fint04 )
- ,Fint05 = ISNULL(s.Fint05 , t.Fint05 )
- ,Fdate01 = ISNULL(s.Fdate01 , t.Fdate01 )
- ,Fdate02 = ISNULL(s.Fdate02 , t.Fdate02 )
- ,Fdate03 = ISNULL(s.Fdate03 , t.Fdate03 )
- ,Fdate04 = ISNULL(s.Fdate04 , t.Fdate04 )
- ,Fdate05 = ISNULL(s.Fdate05 , t.Fdate05 )
- ,Ffloat01 = ISNULL(s.Ffloat01 , t.Ffloat01 )
- ,Ffloat02 = ISNULL(s.Ffloat02 , t.Ffloat02 )
- ,Ffloat03 = ISNULL(s.Ffloat03 , t.Ffloat03 )
- ,Ffloat04 = ISNULL(s.Ffloat04 , t.Ffloat04 )
- ,Ffloat05 = ISNULL(s.Ffloat05 , t.Ffloat05 )
- -- nove prvky na zdroji
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (MemberListId, Code, Name, ShortName, SortOrder, Imported, Blocked, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05)
- VALUES (@MemberListId, s.Code, s.Name, s.ShortName, s.SortOrder, 1, 0, s.Fchar01, s.Fchar02, s.Fchar03, s.Fchar04, s.Fchar05, s.Fchar06, s.Fchar07, s.Fchar08, s.Fchar09, s.Fchar10, s.Fint01, s.Fint02, s.Fint03, s.Fint04, s.Fint05, s.Fdate01, s.Fdate02, s.Fdate03, s.Fdate04, s.Fdate05, s.Ffloat01, s.Ffloat02, s.Ffloat03, s.Ffloat04, s.Ffloat05)
- -- stavajici prvky chybi na zdroji a jsou oznaceny jako importovane --> oznacime jako Blocked
- WHEN NOT MATCHED BY SOURCE AND @BlockMissing = 1 AND t.Imported = 1 AND t.Blocked = 0
- THEN UPDATE SET Blocked = 1
- OUTPUT Inserted.Code, $action INTO @changes;
- ;
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'OK'
- ,(SELECT COUNT(*) FROM @changes WHERE Change = 'UPDATE')
- ,(SELECT COUNT(*) FROM @changes WHERE Change = 'INSERT')
- ,0 -- TODO - je nutno si do tabulky @changes dat pole Blocked a upravit podminky pro pocty zde
- ,'Import proběhl v pořádku'
- ,GetDate()
- )
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- --SELECT @@IDENTITY --18.8.2016 JPE přidán RETURN s návratovou hodnotou
- RETURN
- END TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'ERROR',0, 0, 0
- ,'Nespecifikovaná chyba importu'
- ,GetDate()
- )
- --SELECT - @@IDENTITY
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- RETURN --18.8.2016 JPE přidána návratová hodnota
- END CATCH
- END
- GO
- USE [AmbicaBI_sources]
- GO
- DROP TABLE [dbo].[_DM_EMPTY]
- GO
- /****** Object: Table [dbo].[_DM_EMPTY] Script Date: 1. 6. 2017 11:08:36 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [dbo].[_DM_EMPTY](
- [Code] [varchar](20) NOT NULL,
- [Name] [nvarchar](255) NOT NULL,
- [ShortName] [nvarchar](50) NOT NULL,
- [SortOrder] [int] NULL,
- [Fchar01] [varchar](20) NULL,
- [Fchar02] [varchar](20) NULL,
- [Fchar03] [varchar](20) NULL,
- [Fchar04] [varchar](20) NULL,
- [Fchar05] [varchar](20) NULL,
- [Fchar06] [varchar](50) NULL,
- [Fchar07] [varchar](50) NULL,
- [Fchar08] [varchar](50) NULL,
- [Fchar09] [varchar](50) NULL,
- [Fchar10] [varchar](50) NULL,
- [Fint01] [int] NULL,
- [Fint02] [int] NULL,
- [Fint03] [int] NULL,
- [Fint04] [int] NULL,
- [Fint05] [int] NULL,
- [Fdate01] [datetime] NULL,
- [Fdate02] [datetime] NULL,
- [Fdate03] [datetime] NULL,
- [Fdate04] [datetime] NULL,
- [Fdate05] [datetime] NULL,
- [Ffloat01] [float] NULL,
- [Ffloat02] [float] NULL,
- [Ffloat03] [float] NULL,
- [Ffloat04] [float] NULL,
- [Ffloat05] [float] NULL
- ) ON [PRIMARY]
- GO
- /****** Object: View [ambica].[_VDM_EMPTY] Script Date: 1. 6. 2017 10:10:24 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER VIEW [ambica].[_VDM_EMPTY]
- AS
- SELECT
- -- povinne pole nesouci znakovy klic prvku daneho seznamu prvku (napr. kod strediska, kod produktu,...)
- Code AS Code --[varchar](20) NOT NULL,
- -- povinne pole pro nazev
- ,Name AS Name --[nvarchar](255) NOT NULL,
- ,ShortName AS ShortName
- -- povinne pole pro urceni poradi prvku pri trideni --[int] NOT NULL,
- -- jsou zde uvedeny vzory nekolika zpusobu, je potreba pouzit pouze JEDEN
- -- vzor kodu, kdy kod prvku je puvodne ciselny a ma se podle nej tridit
- -- neda se tomu 100% verit, proto je zabudovan test
- -- ty, co nejsou ciselne, maji poradi 0, budou na zacatku a uzivatele to donuti probelm resit
- ,CASE WHEN ISNUMERIC(Code) = 1 THEN CAST(Code AS int) ELSE 0 END AS SortOrder
- -- vzor kodu pro nagenerovani trideni dle kodu (znakove)
- --,CAST(ROW_NUMBER() OVER( ORDER BY Code) AS int) AS SortOrder
- -- vzor kodu pro nagenerovani trideni dle kodu (ciselne)
- --,CAST(ROW_NUMBER() OVER( ORDER BY CASE WHEN ISNUMERIC(Code) = 1 THEN CAST(Code AS int) ELSE 0 END) AS int) AS SortOrder
- -- vzor kodu pro nagenerovani trideni dle nazvu
- --,CAST(ROW_NUMBER() OVER( ORDER BY Name) AS int) AS SortOrder
- -- volna pole pro ulozeni znakove hodnoty do delky 20 - zbytek bude oriznut zprava
- ,CAST(NULL AS varchar(20)) AS Fchar01 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar02 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar03 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar04 --[varchar](20) NULL,
- ,CAST(NULL AS varchar(20)) AS Fchar05 --[varchar](20) NULL,
- -- volna pole pro ulozeni znakove hodnoty do delky 50 - zbytek bude oriznut zprava
- ,CAST(NULL AS varchar(50)) AS Fchar06 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar07 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar08 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar09 --[varchar](50) NULL,
- ,CAST(NULL AS varchar(50)) AS Fchar10 --[varchar](50) NULL,
- -- volna pole pro ulozeni ciselne hodnoty typu integer
- ,CAST(NULL AS int) AS Fint01 --[int] NULL,
- ,CAST(NULL AS int) AS Fint02 --[int] NULL,
- ,CAST(NULL AS int) AS Fint03 --[int] NULL,
- ,CAST(NULL AS int) AS Fint04 --[int] NULL,
- ,CAST(NULL AS int) AS Fint05 --[int] NULL
- -- volna pole pro ulozeni ciselne hodnoty typu integer
- ,CAST(NULL AS datetime) AS Fdate01 --[datetime] NULL,
- ,CAST(NULL AS datetime) AS Fdate02 --[datetime] NULL,
- ,CAST(NULL AS datetime) AS Fdate03 --[datetime] NULL,
- ,CAST(NULL AS datetime) AS Fdate04 --[datetime] NULL,
- ,CAST(NULL AS datetime) AS Fdate05 --[datetime] NULL
- -- volna pole pro ulozeni ciselne hodnoty typu integer
- ,CAST(NULL AS float) AS Ffloat01 --[float] NULL,
- ,CAST(NULL AS float) AS Ffloat02 --[float] NULL,
- ,CAST(NULL AS float) AS Ffloat03 --[float] NULL,
- ,CAST(NULL AS float) AS Ffloat04 --[float] NULL,
- ,CAST(NULL AS float) AS Ffloat05 --[float] NULL
- -- zde doplnit skutecnou zdrojovou tabulku
- FROM dbo._DM_EMPTY
- GO
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 8
- --Comment: rozsireni importnich procedur
- --EasyProject tasks: #3021
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 8
- GO
- /****** Object: StoredProcedure [import].[MembersFromSource] Script Date: 1. 6. 2017 10:20:05 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ---- =================================================
- ---- Author: PJE
- ---- Create date: podzim 2016
- ---- Description: Procedura importuje prvky jednoho memberlistu
- ---- Changelog: 2017-02-13 PJE Oprava
- ---- =================================================
- ALTER PROCEDURE [import].[MembersFromSource]
- @MemberListId int = 0
- ,@BlockMissing bit = 0
- ,@RunSourceTest bit = 1
- AS
- BEGIN
- DECLARE
- @MemberListCode varchar(20)
- ,@tblSource import.SourceMembers
- ,@query varchar(max)
- ,@db_source_name varchar(255)
- -- pro testy
- --,@MemberListId int = 2
- --,@BlockMissing bit = 0
- --,@RunSourceTest bit = 1
- DECLARE @TestResult TABLE (SourceTestResult bit)
- DECLARE @source_test TABLE (name varchar(255) null)
- DECLARE @changes TABLE(MemberCode varchar(20), Change varchar(20));
- SET @MemberListCode = (SELECT Code FROM p4s.MemberLists WHERE Id = @MemberListId)
- SET @db_source_name = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'db_source_name')
- -- kontrola vstupniho rozhrani
- IF @RunSourceTest = 1
- BEGIN
- SET @query = @db_source_name + '.ambica.SourceTestVDM @DimCode = ''' + @MemberListCode + ''', @Preview = 0'
- EXEC (@query)
- SET @query = 'SELECT TOP 1 TestStatus FROM ' + @db_source_name + '.ambica.SourceTestResults WHERE SourceName = ''VDM_' + @MemberListCode + ''' ORDER BY LastTestDatetime DESC'
- DELETE FROM @TestResult
- INSERT INTO @TestResult EXEC (@query)
- IF (SELECT SourceTestResult FROM @TestResult) = 0
- BEGIN
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'ERROR',0, 0, 0
- ,'Chyba vstupního rozhraní'
- ,GetDate()
- )
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- --SELECT - @@IDENTITY --18.8.2016 JPE přidána návratová hodnota (musi byt pres SELECT, nestaci RETURN 1 :-( )
- RETURN
- END
- END
- BEGIN TRY
- -- naplneni tabulky ze zdroje
- SET @query = 'SELECT Code, Name, ShortName, SortOrder, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05
- FROM ' + @db_source_name + '.dbo.VDM_' + @MemberListCode
- INSERT INTO @tblSource (Code, Name, ShortName, SortOrder, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05)
- EXEC(@query)
- ;WITH cte_members
- AS ( SELECT *
- FROM p4s.Members
- WHERE MemberListId = @MemberListId
- )
- MERGE cte_members AS t
- USING @tblSource AS s
- ON t.Code = s.Code
- -- stavajici prvky na zdroji - updatujeme pouze pokud
- -- a) jedna se o importovane prvky
- -- b) na zdroji neni NULL
- -- c) zdroj nese nejakou zmenu
- WHEN MATCHED AND t.Imported = 1
- AND ( t.Name <> s.Name
- OR t.ShortName <> s.ShortName
- OR t.SortOrder <> s.SortOrder
- OR ISNULL(t.Fchar01,'') <> ISNULL(s.Fchar01 , t.Fchar01 )
- OR ISNULL(t.Fchar02,'') <> ISNULL(s.Fchar02 , t.Fchar02 )
- OR ISNULL(t.Fchar03,'') <> ISNULL(s.Fchar03 , t.Fchar03 )
- OR ISNULL(t.Fchar04,'') <> ISNULL(s.Fchar04 , t.Fchar04 )
- OR ISNULL(t.Fchar05,'') <> ISNULL(s.Fchar05 , t.Fchar05 )
- OR ISNULL(t.Fchar06,'') <> ISNULL(s.Fchar06 , t.Fchar06 )
- OR ISNULL(t.Fchar07,'') <> ISNULL(s.Fchar07 , t.Fchar07 )
- OR ISNULL(t.Fchar08,'') <> ISNULL(s.Fchar08 , t.Fchar08 )
- OR ISNULL(t.Fchar09,'') <> ISNULL(s.Fchar09 , t.Fchar09 )
- OR ISNULL(t.Fchar10,'') <> ISNULL(s.Fchar10 , t.Fchar10 )
- OR ISNULL(t.Fint01,0) <> ISNULL(s.Fint01 , t.Fint01 )
- OR ISNULL(t.Fint02,0) <> ISNULL(s.Fint02 , t.Fint02 )
- OR ISNULL(t.Fint03,0) <> ISNULL(s.Fint03 , t.Fint03 )
- OR ISNULL(t.Fint04,0) <> ISNULL(s.Fint04 , t.Fint04 )
- OR ISNULL(t.Fint05,0) <> ISNULL(s.Fint05 , t.Fint05 )
- OR ISNULL(t.Fdate01,1900-01-01) <> ISNULL(s.Fdate01 , t.Fdate01 )
- OR ISNULL(t.Fdate02,1900-01-01) <> ISNULL(s.Fdate02 , t.Fdate02 )
- OR ISNULL(t.Fdate03,1900-01-01) <> ISNULL(s.Fdate03 , t.Fdate03 )
- OR ISNULL(t.Fdate04,1900-01-01) <> ISNULL(s.Fdate04 , t.Fdate04 )
- OR ISNULL(t.Fdate05,1900-01-01) <> ISNULL(s.Fdate05 , t.Fdate05 )
- OR ISNULL(t.Ffloat01,0) <> ISNULL(s.Ffloat01 , t.Ffloat01 )
- OR ISNULL(t.Ffloat02,0) <> ISNULL(s.Ffloat02 , t.Ffloat02 )
- OR ISNULL(t.Ffloat03,0) <> ISNULL(s.Ffloat03 , t.Ffloat03 )
- OR ISNULL(t.Ffloat04,0) <> ISNULL(s.Ffloat04 , t.Ffloat04 )
- OR ISNULL(t.Ffloat05,0) <> ISNULL(s.Ffloat05 , t.Ffloat05 )
- )
- THEN UPDATE
- SET
- Name = s.Name
- --,ShortName = CASE WHEN t.ShortName = LEFT(t.Name,50) THEN LEFT(s.Name, 50) ELSE LEFT(t.Name,50) END
- ,ShortName = ISNULL(s.ShortName, t.ShortName)
- ,SortOrder = s.SortOrder
- ,Fchar01 = ISNULL(s.Fchar01 , t.Fchar01 )
- ,Fchar02 = ISNULL(s.Fchar02 , t.Fchar02 )
- ,Fchar03 = ISNULL(s.Fchar03 , t.Fchar03 )
- ,Fchar04 = ISNULL(s.Fchar04 , t.Fchar04 )
- ,Fchar05 = ISNULL(s.Fchar05 , t.Fchar05 )
- ,Fchar06 = ISNULL(s.Fchar06 , t.Fchar06 )
- ,Fchar07 = ISNULL(s.Fchar07 , t.Fchar07 )
- ,Fchar08 = ISNULL(s.Fchar08 , t.Fchar08 )
- ,Fchar09 = ISNULL(s.Fchar09 , t.Fchar09 )
- ,Fchar10 = ISNULL(s.Fchar10 , t.Fchar10 )
- ,Fint01 = ISNULL(s.Fint01 , t.Fint01 )
- ,Fint02 = ISNULL(s.Fint02 , t.Fint02 )
- ,Fint03 = ISNULL(s.Fint03 , t.Fint03 )
- ,Fint04 = ISNULL(s.Fint04 , t.Fint04 )
- ,Fint05 = ISNULL(s.Fint05 , t.Fint05 )
- ,Fdate01 = ISNULL(s.Fdate01 , t.Fdate01 )
- ,Fdate02 = ISNULL(s.Fdate02 , t.Fdate02 )
- ,Fdate03 = ISNULL(s.Fdate03 , t.Fdate03 )
- ,Fdate04 = ISNULL(s.Fdate04 , t.Fdate04 )
- ,Fdate05 = ISNULL(s.Fdate05 , t.Fdate05 )
- ,Ffloat01 = ISNULL(s.Ffloat01 , t.Ffloat01 )
- ,Ffloat02 = ISNULL(s.Ffloat02 , t.Ffloat02 )
- ,Ffloat03 = ISNULL(s.Ffloat03 , t.Ffloat03 )
- ,Ffloat04 = ISNULL(s.Ffloat04 , t.Ffloat04 )
- ,Ffloat05 = ISNULL(s.Ffloat05 , t.Ffloat05 )
- -- nove prvky na zdroji
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (MemberListId, Code, Name, ShortName, SortOrder, Imported, Blocked, Fchar01, Fchar02, Fchar03, Fchar04, Fchar05, Fchar06, Fchar07, Fchar08, Fchar09, Fchar10, Fint01, Fint02, Fint03, Fint04, Fint05, Fdate01, Fdate02, Fdate03, Fdate04, Fdate05, Ffloat01, Ffloat02, Ffloat03, Ffloat04, Ffloat05)
- VALUES (@MemberListId, s.Code, s.Name, s.ShortName, s.SortOrder, 1, 0, s.Fchar01, s.Fchar02, s.Fchar03, s.Fchar04, s.Fchar05, s.Fchar06, s.Fchar07, s.Fchar08, s.Fchar09, s.Fchar10, s.Fint01, s.Fint02, s.Fint03, s.Fint04, s.Fint05, s.Fdate01, s.Fdate02, s.Fdate03, s.Fdate04, s.Fdate05, s.Ffloat01, s.Ffloat02, s.Ffloat03, s.Ffloat04, s.Ffloat05)
- -- stavajici prvky chybi na zdroji a jsou oznaceny jako importovane --> oznacime jako Blocked
- WHEN NOT MATCHED BY SOURCE AND @BlockMissing = 1 AND t.Imported = 1 AND t.Blocked = 0
- THEN UPDATE SET Blocked = 1
- OUTPUT Inserted.Code, $action INTO @changes;
- ;
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'OK'
- ,(SELECT COUNT(*) FROM @changes WHERE Change = 'UPDATE')
- ,(SELECT COUNT(*) FROM @changes WHERE Change = 'INSERT')
- ,0 -- TODO - je nutno si do tabulky @changes dat pole Blocked a upravit podminky pro pocty zde
- ,'Import proběhl v pořádku'
- ,GetDate()
- )
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- --SELECT @@IDENTITY --18.8.2016 JPE přidán RETURN s návratovou hodnotou
- RETURN
- END TRY
- BEGIN CATCH
- -- zapis do logu
- INSERT INTO import.ImportLog (SourceType, SourceCode, ImportStatus, UpdatedCount, InsertedCount, BlockedCount, Comment, LogTime)
- VALUES
- ( 'Members', @MemberListCode, 'ERROR',0, 0, 0
- ,'Nespecifikovaná chyba importu'
- ,GetDate()
- )
- --SELECT - @@IDENTITY
- SELECT CAST(@@IDENTITY AS int) -- 7.2.2017 JPE prevod navratove hodnoty na int, vracet vzdy id logu (ne zapornou hodnotu)
- RETURN --18.8.2016 JPE přidána návratová hodnota
- END CATCH
- END
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 9
- --Comment: uprava MDX kodu
- --EasyProject tasks: #3031
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 9
- GO
- UPDATE olap.MCubeCalculationsProp SET MDXcode = REPLACE(MDXcode, '[Typ hodnoty ukazatele - základní].[Typ hodnoty]', '[Typ hodnoty - základní].[Typ hodnoty - základní]')
- --Title: AmbicaBI - Update script
- --Version to: 2.5.5
- --Hotfix no.: 10
- --Comment: pje - oprava procedury pro hierarchie
- -- jpr - pridani chybejicich indexu
- --EasyProject tasks: #3031
- --Date: 21.05.2017
- --Generated by: jpr
- GO
- USE [AmbicaBI]
- GO
- UPDATE [amb].[VersionNew] SET HotfixDb = 10
- GO
- /****** Object: StoredProcedure [p4s].[ActHierarchy] Script Date: 6. 6. 2017 15:16:21 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- -- =================================================
- -- Author: PJE
- -- Create date: 16.02.2017
- -- Description: Procedura na aktualizaci NEimportované hierarchie
- -- Changelog:
- -- 06.06.2017 PJE - zdrojova vazba muze byt i typu 1 (ne jen 2)
- -- =================================================
- ALTER PROCEDURE [p4s].[ActHierarchy]
- @HierarchyId int = 0
- AS
- BEGIN
- -- pro testy
- --DECLARE @HierarchyId int = 11
- DECLARE
- @ProcedureName varchar(50) = 'ActHierarchy'
- ,@Level int
- ,@ParentList int
- ,@ChildList int
- ,@SourceRelationId int
- ,@RelationId int
- ,@ParentRelationId int
- ,@Comment varchar(255)
- -- kontrola na atribut Imported
- IF (SELECT Imported FROM p4s.Hierarchies WHERE Id = @HierarchyId) = 1
- BEGIN
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, 'Hierarchie je importovaná, není možno ji aktulizovat jinak.',GetDate() )
- --SELECT - @@IDENTITY
- RETURN
- END
- DECLARE cLevel CURSOR FAST_FORWARD FOR
- SELECT hl.LevelOrdinal, mlr.ParentListId, mlr.ChildListId, mlrs.Id, mlr.Id, mlr.ParentMemberListRelationId
- FROM p4s.HierarchyLevels hl
- JOIN p4s.MemberListRelations mlr ON mlr.Id = hl.UpMemberListRelationId
- JOIN p4s.MemberListRelations mlrs ON mlrs.ParentListId = mlr.ParentListId AND mlrs.ChildListId = mlr.ChildListId AND mlrs.RelationTypeId IN (1, 2)
- WHERE HierarchyId = @HierarchyId
- AND mlr.RelationTypeId = 3
- ORDER BY hl.LevelOrdinal
- OPEN cLevel
- FETCH NEXT FROM cLevel INTO @Level, @ParentList, @ChildList, @SourceRelationId, @RelationId, @ParentRelationId
- WHILE @@FETCH_STATUS = 0
- BEGIN
- --SELECT @Level, @ParentList, @ChildList, @SourceRelationId, @RelationId, @ParentRelationId
- INSERT INTO p4s.MemberRelations (MemberListRelationId, ParentMemberId, ChildMemberId, SortOrder, Imported, MtMParentMemberId)
- SELECT
- @RelationId
- ,mr.ParentMemberId
- ,mr.ChildMemberId
- ,mr.SortOrder
- ,0
- ,mrp.Id
- FROM p4s.MemberRelations mr -- toto je zdrojova vazba
- JOIN p4s.MemberRelations mrp -- toto je parent relace (v prvnim kole typ 2, pak uz 3)
- ON mr.ParentMemberId = mrp.ChildMemberId
- LEFT JOIN p4s.MemberRelations mra -- existujici vazby
- ON mra.MemberListRelationId = @RelationId
- AND mra.ParentMemberId = mr.ParentMemberId
- AND mra.ChildMemberId = mr.ChildMemberId
- AND mra.MtMParentMemberId = mrp.Id
- WHERE mr.MemberListRelationId = @SourceRelationId
- AND mrp.MemberListRelationId = @ParentRelationId
- AND mra.Id IS NULL
- SET @Comment = 'V levelu ' + CAST(@Level AS varchar) + ' hierarchie ' + CAST(@HierarchyId AS varchar) + ' přidáno relací: ' + CAST(ISNULL(@@ROWCOUNT,0) AS varchar)
- -- zapis do logu
- INSERT INTO p4s.RunLog (ProcedureName, Comment, LogTime)
- VALUES (@ProcedureName, @Comment, GetDate() )
- FETCH NEXT FROM cLevel INTO @Level, @ParentList, @ChildList, @SourceRelationId, @RelationId, @ParentRelationId
- END
- CLOSE cLevel
- DEALLOCATE cLevel
- END
- GO
- IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name='NCI_MEMBERRELATIONS_1'
- AND object_id = OBJECT_ID('[p4s].[MemberRelations]'))
- BEGIN
- CREATE NONCLUSTERED INDEX [NCI_MEMBERRELATIONS_1]
- ON [p4s].[MemberRelations]([MemberListRelationId] ASC)
- INCLUDE([Id], [ParentMemberId], [ChildMemberId], [MtMParentMemberId]);
- END
- IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name='NCI_MEMBERRELATIONS_2'
- AND object_id = OBJECT_ID('[p4s].[MemberRelations]'))
- BEGIN
- CREATE NONCLUSTERED INDEX [NCI_MEMBERRELATIONS_2]
- ON [p4s].[MemberRelations]([MemberListRelationId] ASC, [ParentMemberId] ASC, [ChildMemberId] ASC)
- INCLUDE([Id]);
- END
- IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name='NCI_MEMBERRELATIONS_3'
- AND object_id = OBJECT_ID('[p4s].[MemberRelations]'))
- BEGIN
- CREATE NONCLUSTERED INDEX [NCI_MEMBERRELATIONS_3]
- ON [p4s].[MemberRelations]([MemberListRelationId] ASC, [ChildMemberId] ASC, [MtMParentMemberId] ASC)
- INCLUDE([Id], [ParentMemberId]);
- END
- -------------------------------------------------------------------------------------------------------
- IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name='NCI_MEMBERS_1'
- AND object_id = OBJECT_ID('[p4s].[Members]'))
- BEGIN
- CREATE NONCLUSTERED INDEX [NCI_MEMBERS_1]
- ON [p4s].[Members]([MemberListId] ASC)
- INCLUDE([Id], [Code], [Name], [SortOrder], [Blocked]);
- END
- GO
- UPDATE amb.VersionNew SET VersionDb = 256, HotfixDb = 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement