aNCORA UPDATE db
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
/*************************************************************
|
||||
-- AGGIUNTA FUNZIONI
|
||||
**************************************************************/
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[f_padLeft] Script Date: 17/11/2018 16:12:15 ******/
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
|
||||
/***************************************
|
||||
* FUNCTION f_padLeft
|
||||
*
|
||||
* fornisce una stringa della lunghezza desiderata aggiungendo a sx il carattere richiesto alla @string originale
|
||||
*
|
||||
* Steamware, S.E.L.
|
||||
* mod: 2010.03.19
|
||||
*
|
||||
****************************************/
|
||||
CREATE FUNCTION [dbo].[f_padLeft] (@string VARCHAR(255), @desired_length INTEGER, @pad_character CHAR(1))
|
||||
RETURNS VARCHAR(255) AS
|
||||
BEGIN
|
||||
|
||||
-- Prefix the required number of spaces to bulk up the string and then replace the spaces with the desired character
|
||||
RETURN CASE
|
||||
WHEN LEN(@string) < @desired_length
|
||||
THEN REPLACE(SPACE(@desired_length - LEN(@string)), ' ', @pad_character) + @string
|
||||
ELSE @string
|
||||
END
|
||||
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
-- =============================================
|
||||
-- Author: S.E.Locatelli
|
||||
-- Create date: 2018.10.15
|
||||
-- Description: Verifica stringa Allarmi attivi (delta)
|
||||
-- e processa di conseguenza registrando history
|
||||
-- =============================================
|
||||
ALTER PROCEDURE [dbo].[stp_Allarmi_checkStatus]
|
||||
(
|
||||
@charSep CHAR(1) -- separatore elenco, default è ","
|
||||
,@alarmList NVARCHAR(MAX) -- elenco allarmi attivi con separatore indicato
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
BEGIN tran
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @adesso DATETIME = GETDATE()
|
||||
|
||||
-- splitta elenco allarmi da stringa + separatore e salva in temp table...
|
||||
SELECT *
|
||||
INTO #CurrAlarm
|
||||
FROM
|
||||
(
|
||||
SELECT * FROM dbo.SplitStrings(@alarmList,@charSep)
|
||||
---- vers sql2016
|
||||
--SELECT value FROM STRING_SPLIT(@alarmList, @charSep)
|
||||
) as tblStatus
|
||||
|
||||
--SELECT * from #CurrAlarm
|
||||
|
||||
-- effettua check tra allarmi attivi e nuova lista, --> registro allarmi cessati
|
||||
SELECT *
|
||||
INTO #NewAlarms
|
||||
FROM
|
||||
(
|
||||
-- allarmi padded a 8 char
|
||||
SELECT *, 'NEW' as stato
|
||||
FROM AnagAllarmi AAl
|
||||
--INNER JOIN #CurrAlarm CAl ON AAl.CodAllarme = CAl.value
|
||||
INNER JOIN #CurrAlarm CAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(CAl.Item, 9, '0')
|
||||
WHERE AAl.ReportAttivo = 1
|
||||
AND AAl.CurrStatus = 0
|
||||
) as tblNewAarms
|
||||
|
||||
-- effettua check tra allarmi attivi e nuova lista, --> registro allarmi NUOVI
|
||||
SELECT *
|
||||
INTO #CeasedAlarms
|
||||
FROM
|
||||
(
|
||||
SELECT *, 'CEASED' as stato
|
||||
FROM AnagAllarmi AAl
|
||||
--LEFT OUTER JOIN #CurrAlarm CAl ON AAl.CodAllarme = CAl.value
|
||||
LEFT OUTER JOIN #CurrAlarm CAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(CAl.Item, 9, '0')
|
||||
WHERE AAl.ReportAttivo = 1
|
||||
AND AAl.CurrStatus = 1
|
||||
--AND CAl.value IS NULL
|
||||
AND CAl.Item IS NULL
|
||||
) as tblCeasedAlarms
|
||||
|
||||
----------------------------------
|
||||
-- processo allarmi NUOVI
|
||||
----------------------------------
|
||||
-- ora aggiorno in anagrafica
|
||||
UPDATE AnagAllarmi
|
||||
SET CurrStatus = 1
|
||||
,LastStart = @adesso
|
||||
from AnagAllarmi AAl
|
||||
INNER JOIN #NewAlarms nAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(nAl.CodAllarme, 9, '0')
|
||||
-- riporto in history...
|
||||
INSERT INTO StoricoAllarmi(DtEvento, CodAllarme, Attivo)
|
||||
SELECT @adesso, CodAllarme, 1
|
||||
FROM #NewAlarms
|
||||
|
||||
----------------------------------
|
||||
-- processo allarmi CESSATI
|
||||
----------------------------------
|
||||
-- ora aggiorno in anagrafica
|
||||
UPDATE AnagAllarmi
|
||||
SET CurrStatus = 0
|
||||
,LastEnd = @adesso
|
||||
from AnagAllarmi AAl
|
||||
INNER JOIN #CeasedAlarms nAl ON dbo.f_padLeft(AAl.CodAllarme, 9, '0') = dbo.f_padLeft(nAl.CodAllarme, 9, '0')
|
||||
-- riporto in history...
|
||||
INSERT INTO StoricoAllarmi(DtEvento, CodAllarme, Attivo)
|
||||
SELECT @adesso, CodAllarme, 0
|
||||
FROM #CeasedAlarms
|
||||
|
||||
COMMIT tran
|
||||
END
|
||||
|
||||
|
||||
-- UPDATE
|
||||
update AnagAllarmi set CodAllarme = dbo.f_padLeft(CodAllarme, 9, '0')
|
||||
|
||||
select * from AnagAllarmi
|
||||
Reference in New Issue
Block a user