Safety/SQLUpdates/Update-1-0-0.sql
2026-09-01 19:38:25 +02:00

238 lines
No EOL
8 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

IF OBJECT_ID('dbo.SchemaVersion', 'U') IS NULL
BEGIN
CREATE TABLE dbo.SchemaVersion (
VersionNumber VARCHAR(20) NOT NULL PRIMARY KEY,
AppliedOn DATETIME2 NOT NULL DEFAULT GETDATE(),
AppliedBy VARCHAR(100) NOT NULL DEFAULT SUSER_SNAME(),
ScriptDescription VARCHAR(255) NULL
);
PRINT 'Table dbo.SchemaVersion created successfully.';
END
ELSE
BEGIN
PRINT 'Table dbo.SchemaVersion already exists.';
END
GO
--SCRIPT template
SET NOCOUNT ON;
BEGIN TRANSACTION;
DECLARE @CurrentVersion VARCHAR(20) = '1.0.0'; -- Set your script's target version
-- Check if this update has already been applied
IF EXISTS (SELECT 1 FROM dbo.SchemaVersion WHERE VersionNumber = @CurrentVersion)
BEGIN
PRINT 'Version ' + @CurrentVersion + ' has already been applied. Skipping script.';
ROLLBACK TRANSACTION;
RETURN;
END
BEGIN TRY
-- =========================================================
-- MIGRATION SQL
-- =========================================================
EXEC sp_executesql N'
ALTER PROCEDURE [dbo].[RegistrySelect]
AS
SELECT [r].[RegistryID],
[r].[IdentificatieToestel],
[ParentID] = NULL,
[r].[TypeAanduiding],
[TypeAanduidingNaam] = [tl].[ToestelModelNaam],
[r].[SerieNummer],
[Eigenaar] = ISNULL([r].[Eigenaar], ''HPH''),
[CCWBS_ID] = ISNULL([r].[CCWBS_ID], 1),
[cw].[WBSCC_nr],
[r].[NaamFabrikant],
[r].[NaamLeverancier],
[r].[DatumInGebruik], --= Today (Default + aanpassing mogelijk)
[r].[DatumUitGebruik],
[r].[Lokaal_ID],
[lk].[LokaalNaam], --– SELECT [dbo_Lokaal].[Lokaal_ID], [dbo_Lokaal].[LokaalNaam] FROM dbo_Lokaal ORDER BY [LokaalNaam];
[r].[id_statuslijst],
[sl].[RegisterStatus],
[r].[DefinitieNummerKal],
[r].[KalibratieFrequentie],
[r].[KalibratieFrequentieUnit],
[KalibratieFrequentieUnitName] = [fe].[description],
[r].[KalibratieVerantw],
[KalibratieVerantwAfkorting] = [kv].[Afkorting], [r].[Assetnr]
FROM [dbo].[Register] [r]
LEFT JOIN [dbo].[Toestelmodel] AS [tl]
ON [tl].[TypeAanduiding] = [r].[TypeAanduiding]
LEFT JOIN [dbo].[Lokaal] AS [lk]
ON [lk].[Lokaal_ID] = [r].[Lokaal_ID]
LEFT JOIN [dbo].[Statuslijst] [sl]
ON [sl].[ID_statuslijst] = [r].[id_statuslijst]
LEFT JOIN [dbo].[frequentieEenheid] [fe]
ON [fe].[FrequentieEenheid] = [r].[KalibratieFrequentieUnit]
LEFT JOIN [dbo].[KCO_verantw] [kv]
ON [kv].[ID_KCO_Verantw] = [r].[KalibratieVerantw]
LEFT JOIN [dbo].[CCWBS] [cw]
ON [cw].[CCWBS_ID] = [r].[CCWBS_ID]
WHERE [r].[deleted] = 0;
'
EXEC sp_executesql N'
ALTER PROCEDURE [dbo].[RegistryInsert]
@IdentificatieToestel VARCHAR(20) = NULL,
@TypeAanduiding VARCHAR(4) = NULL,
@SerieNummer VARCHAR(25) = NULL,
@Eigenaar VARCHAR(50) = NULL,
@CCWBS_ID INT = NULL,
@NaamFabrikant VARCHAR(50) = NULL,
@NaamLeverancier VARCHAR(50) = NULL,
@DatumInGebruik DATETIME = NULL,
@DatumUitGebruik DATETIME = NULL,
@Lokaal_ID INT = NULL,
@id_statuslijst INT = NULL,
@DefinitieNummerKal INT = NULL,
@KalibratieFrequentie INT = NULL,
@KalibratieFrequentieUnit CHAR(1) = NULL,
@KalibratieVerantw INT = NULL,@Assetnr varchar(20)=null
AS
DECLARE @RegistryID INT;
INSERT [dbo].[Register]
(
[IdentificatieToestel],
[TypeAanduiding],
[SerieNummer],
[Eigenaar],
[CCWBS_ID],
[NaamFabrikant],
[NaamLeverancier],
[DatumInGebruik],
[DatumUitGebruik],
[Lokaal_ID],
[id_statuslijst],
[DefinitieNummerKal],
[KalibratieFrequentie],
[KalibratieFrequentieUnit],
[KalibratieVerantw],
[deleted],[Assetnr]
)
VALUES
(@IdentificatieToestel, @TypeAanduiding, @SerieNummer, @Eigenaar, @CCWBS_ID, @NaamFabrikant, @NaamLeverancier,
@DatumInGebruik, @DatumUitGebruik, @Lokaal_ID, @id_statuslijst, @DefinitieNummerKal, @KalibratieFrequentie,
@KalibratieFrequentieUnit, @KalibratieVerantw, 0,@Assetnr);
SET @RegistryID = SCOPE_IDENTITY();
SELECT [r].[RegistryID],
[r].[IdentificatieToestel],
[r].[TypeAanduiding],
[TypeAanduidingNaam] = [tl].[ToestelModelNaam],
[r].[SerieNummer],
[Eigenaar] = ISNULL([r].[Eigenaar], ''HPH''),
[CCWBS_ID] = ISNULL([r].[CCWBS_ID], 1),
[cw].[WBSCC_nr],
[r].[NaamFabrikant],
[r].[NaamLeverancier],
[r].[DatumInGebruik], --= Today (Default + aanpassing mogelijk)
[r].[DatumUitGebruik],
[r].[Lokaal_ID],
[lk].[LokaalNaam], --– SELECT [dbo_Lokaal].[Lokaal_ID], [dbo_Lokaal].[LokaalNaam] FROM dbo_Lokaal ORDER BY [LokaalNaam];
[r].[id_statuslijst],
[sl].[RegisterStatus] [DefinitieNummerKal],
[r].[KalibratieFrequentie],
[r].[KalibratieFrequentieUnit],
[KalibratieFrequentieUnitName] = [fe].[description],
[r].[KalibratieVerantw],
[KalibratieVerantwAfkorting] = [kv].[Afkorting], [r].[Assetnr]
FROM [dbo].[Register] [r]
LEFT JOIN [dbo].[Toestelmodel] AS [tl]
ON [tl].[TypeAanduiding] = [r].[TypeAanduiding]
LEFT JOIN [dbo].[Lokaal] AS [lk]
ON [lk].[Lokaal_ID] = [r].[Lokaal_ID]
LEFT JOIN [dbo].[Statuslijst] [sl]
ON [sl].[ID_statuslijst] = [r].[id_statuslijst]
LEFT JOIN [dbo].[frequentieEenheid] [fe]
ON [fe].[FrequentieEenheid] = [r].[KalibratieFrequentieUnit]
LEFT JOIN [dbo].[KCO_verantw] [kv]
ON [kv].[ID_KCO_Verantw] = [r].[KalibratieVerantw]
LEFT JOIN [dbo].[CCWBS] [cw]
ON [cw].[CCWBS_ID] = [r].[CCWBS_ID]
WHERE [r].[RegistryID] = @RegistryID;
'
EXEC sp_executesql N'
ALTER PROCEDURE [dbo].[RegistryUpdate]
@RegistryID INT,
@IdentificatieToestel VARCHAR(20) = NULL,
@TypeAanduiding VARCHAR(4) = NULL,
@SerieNummer VARCHAR(25) = NULL,
@Eigenaar VARCHAR(50) = NULL,
@CCWBS_ID INT = NULL,
@NaamFabrikant VARCHAR(50) = NULL,
@NaamLeverancier VARCHAR(50) = NULL,
@DatumInGebruik DATETIME = NULL,
@DatumUitGebruik DATETIME = NULL,
@Lokaal_ID INT = NULL, ----niet meer update , is via tabel
@id_statuslijst INT = NULL, --niet meer update
@DefinitieNummerKal INT = NULL,
@KalibratieFrequentie INT = NULL,
@KalibratieFrequentieUnit CHAR(1) = NULL,
@KalibratieVerantw INT = NULL,
@Assetnr VARCHAR(20) = NULL
AS
DECLARE @now DATETIME = GETDATE();
DECLARE @id_status INT;
DECLARE @usr VARCHAR(20) = LEFT(SYSTEM_USER, 20);
INSERT [dbo].[Status]
(
[RegistryID],
[Datum],
[id_statuslijst],
[lokaalInfo],
[opmerking],
[creator],
[created],
[changer],
[changed]
)
VALUES
(@RegistryID, @now, @id_statuslijst, @Lokaal_ID, ''initial'', @usr, @now, @usr, @now);
SET @id_status = SCOPE_IDENTITY();
UPDATE [dbo].[Register]
SET [IdentificatieToestel] = @IdentificatieToestel,
[TypeAanduiding] = @TypeAanduiding,
[SerieNummer] = @SerieNummer,
[Eigenaar] = @Eigenaar,
[CCWBS_ID] = @CCWBS_ID,
[NaamFabrikant] = @NaamFabrikant,
[NaamLeverancier] = @NaamLeverancier,
[DefinitieNummerKal] = @DefinitieNummerKal,
[KalibratieFrequentie] = @KalibratieFrequentie,
[KalibratieFrequentieUnit] = @KalibratieFrequentieUnit,
[KalibratieVerantw] = @KalibratieVerantw,
[id_statuslijst] = @id_statuslijst,
[Last_ID_Status] = @id_status,
[Last_Date_Status] = @now,
--,[Lokaal_ID]= @Lokaal_ID
[DatumInGebruik] = @DatumInGebruik,
[DatumUitGebruik] = @DatumUitGebruik,
[Assetnr] = ISNULL(@Assetnr, [Assetnr])
WHERE [RegistryID] = @RegistryID;
'
-- =========================================================
-- RECORD SUCCESSFUL VERSION UPDATE
-- =========================================================
INSERT INTO dbo.SchemaVersion (VersionNumber, ScriptDescription)
VALUES (@CurrentVersion, 'Added Assetnr to Registryxxx sp');
COMMIT TRANSACTION;
PRINT 'Successfully applied update to version ' + @CurrentVersion;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
-- Print exception details
DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
RAISERROR('Failed to apply version %s. Error: %s', 16, 1, @CurrentVersion, @ErrorMessage);
END CATCH;
GO