132 lines
No EOL
3.6 KiB
Transact-SQL
132 lines
No EOL
3.6 KiB
Transact-SQL
DECLARE @TargetVersionNumber INT = 2, @NewVersionNumber INT=3, @VersionNumber INT;
|
|
|
|
IF OBJECT_ID('dbo.[DatabaseVersion]') IS NULL
|
|
BEGIN
|
|
CREATE TABLE [dbo].[DatabaseVersion] (
|
|
VersionNumber INT NOT NULL,
|
|
VersionDate DATETIME NOT NULL,
|
|
Description NVARCHAR(200) NULL
|
|
);
|
|
|
|
INSERT INTO [dbo].[DatabaseVersion] (VersionNumber, VersionDate, Description)
|
|
VALUES (1, GETDATE(), 'Initial version');
|
|
|
|
SET @VersionNumber = 1;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @VersionNumber = ISNULL(MAX(VersionNumber), 0)
|
|
FROM [dbo].[DatabaseVersion];
|
|
END
|
|
|
|
-- If version target is not met, disable execution for all subsequent batches
|
|
IF @VersionNumber <> @TargetVersionNumber
|
|
BEGIN
|
|
PRINT 'Target version condition not met (Version is not ' + CAST(@TargetVersionNumber AS VARCHAR(10)) + '). Canceling rest of script.';
|
|
SET NOEXEC ON;
|
|
END
|
|
GO
|
|
|
|
CREATE TABLE [dbo].[EPDDevice](
|
|
[EPDID] [INT] NOT NULL,
|
|
[FirmWare] [VARCHAR](50) NULL,
|
|
[First_Station] [INT] NOT NULL,
|
|
[firstseen] [DATETIME] NOT NULL,
|
|
[epdType] [TINYINT] NULL,
|
|
[Last_Station] [INT] NULL,
|
|
[lastseen] [DATETIME] NULL,
|
|
PRIMARY KEY CLUSTERED ( [EPDID] ASC)
|
|
)
|
|
GO
|
|
|
|
CREATE TABLE [dbo].[EPDDeviceLog](
|
|
[EPDID] [INT] NOT NULL,
|
|
[ID_Station] [INT] NOT NULL,
|
|
[ID_Visit] [INT] NOT NULL,
|
|
[updated] [DATETIME] NOT NULL,
|
|
[BatNoload_mV] [INT] NOT NULL,
|
|
[Batload_mV] [INT] NOT NULL,
|
|
[CPU_mV] [INT] NOT NULL,
|
|
[r_InvalidState] [INT] NOT NULL,
|
|
[r_OperationTimeout] [INT] NOT NULL,
|
|
[r_InsufficientPriv] [INT] NOT NULL,
|
|
[r_OperationFailed] [INT] NOT NULL,
|
|
[r_OtherError] [INT] NOT NULL,
|
|
[Registered] [BIT] NULL,
|
|
[WriteTime] [INT] NULL,
|
|
PRIMARY KEY CLUSTERED ( [EPDID] ASC, [ID_Station] ASC,[ID_Visit] ASC)
|
|
)
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[EPDAddLog]
|
|
@EPDID INT,
|
|
@FirmWare VARCHAR(50),
|
|
@BatNoload_mV INT = 0,
|
|
@Batload_mV INT = 0,
|
|
@CPU_mV INT = 0,
|
|
@ID_Station INT,
|
|
@ID_Visit INT,
|
|
@epdType TINYINT,
|
|
@r_InvalidState INT = 0,
|
|
@r_OperationTimeout INT = 0,
|
|
@r_InsufficientPriv INT = 0,
|
|
@r_OperationFailed INT = 0,
|
|
@r_OtherError INT = 0,
|
|
@WriteTime INT = 0,
|
|
@Registered BIT = 0
|
|
AS
|
|
BEGIN
|
|
DECLARE @now DATETIME = GETDATE();
|
|
IF NOT EXISTS (SELECT * FROM [dbo].[EPDDevice] WHERE [EPDID] = @EPDID)
|
|
INSERT [dbo].[EPDDevice]
|
|
(
|
|
[EPDID],
|
|
[FirmWare],
|
|
[First_Station],
|
|
[firstseen],
|
|
[Last_Station],
|
|
[lastseen],
|
|
[epdType]
|
|
)
|
|
VALUES
|
|
(@EPDID, @FirmWare, @ID_Station, @now, @ID_Station, @now, @epdType);
|
|
ELSE
|
|
UPDATE [dbo].[EPDDevice]
|
|
SET [Last_Station] = @ID_Station,
|
|
[lastseen] = @now
|
|
WHERE [EPDID] = @EPDID;
|
|
|
|
INSERT [dbo].[EPDDeviceLog]
|
|
(
|
|
[EPDID],
|
|
[ID_Station],
|
|
[ID_Visit],
|
|
[updated],
|
|
[BatNoload_mV],
|
|
[Batload_mV],
|
|
[CPU_mV],
|
|
[epdType],
|
|
[r_InvalidState],
|
|
[r_OperationTimeout],
|
|
[r_InsufficientPriv],
|
|
[r_OperationFailed],
|
|
[r_OtherError],
|
|
[WriteTime],
|
|
[Registered]
|
|
)
|
|
VALUES
|
|
( @EPDID, -- EPDID - int
|
|
@ID_Station, -- ID_Station - int
|
|
@ID_Visit, -- ID_Visit - int
|
|
@now, -- updated - datetime
|
|
@BatNoload_mV, @Batload_mV, @CPU_mV, @r_InvalidState, @r_OperationTimeout, @r_InsufficientPriv,
|
|
@r_OperationFailed, @r_OtherError, @WriteTime, @Registered);
|
|
END;
|
|
|
|
GO
|
|
INSERT INTO [dbo].[DatabaseVersion] (VersionNumber, VersionDate, Description)
|
|
VALUES (@NewVersionNumber, GETDATE(), 'Log');
|
|
GO
|
|
-- Final Batch: Turn execution back ON for subsequent scripts in the same session
|
|
SET NOEXEC OFF;
|
|
GO |