Files
DP44/DataPRO/Modules/Database/DatabaseMigrationScripts/MigrationScripts/Version87/dbo.Alter_sp_TestSetupsDelete86.sql
2026-04-17 14:55:32 -04:00

54 lines
2.7 KiB
Transact-SQL

ALTER PROCEDURE [dbo].[sp_TestSetupsDelete]
@TestSetupId INT = 0,
@TestSetupName NVARCHAR(50) = NULL,
@errorNumber INT OUTPUT,
@errorMessage NVARCHAR(255) OUTPUT
AS
BEGIN
SET @errorNumber = 0;
SET @errorMessage = SPACE(0);
BEGIN TRY
BEGIN TRANSACTION [tDeleteTestSetups]
IF(@TestSetupId = 0)
BEGIN
SET @TestSetupId = [dbo].foo_IdGetTestSetup(@TestSetupName)
END
DELETE FROM [dbo].[TestSetupObjectMetaData] where TestSetupId = @TestSetupId
DELETE FROM [dbo].[TestSetupHardware] where TestSetupId = @TestSetupId
DELETE FROM [dbo].[LevelTriggers] where TestSetupId = @TestSetupId
DELETE FROM [dbo].[CalculatedChannels] where TestSetupId = @TestSetupId
DELETE FROM [dbo].[TestGraphs] where TestSetupId = @TestSetupId
/*Delete group channel settings*/
DELETE A FROM [dbo].[GroupChannelSettings] AS A INNER JOIN [dbo].[Channels] AS B ON A.ChannelId=B.Id
INNER JOIN [dbo].[Groups] AS C ON B.GroupId=C.Id INNER JOIN [dbo].TestSetupGroups AS D ON C.Id=D.GroupId WHERE D.TestSetupId=@TestSetupId
/*Delete group hardware*/
DELETE A FROM [dbo].[GroupHardware] AS A INNER JOIN [dbo].[TestSetupGroups] AS B ON A.GroupId=B.GroupId WHERE B.TestSetupId=@TestSetupId
/*Delete group channels*/
DELETE A FROM [dbo].[Channels] AS A INNER JOIN [dbo].[TestSetupGroups] AS B ON A.GroupId = B.GroupId WHERE B.TestSetupId=@TestSetupId
/*grab a copy of all groups associated with test so we can delete them*/
SELECT [GroupId] INTO #temptable FROM [dbo].[TestSetupGroups] WHERE [TestSetupId]=@TestSetupId
/*unassociate the group from the test setup*/
DELETE FROM [dbo].[TestSetupGroups] WHERE [TestSetupId] = @TestSetupId
/*delete the groups*/
DELETE FROM [dbo].[Groups] WHERE [Id] IN (SELECT [GroupId] FROM #tempTable)
/*delete test specific hardware */
UPDATE [dbo].[Channels] SET [DASId] = 0, [DASChannelIndex]=0 FROM [dbo].[Channels] AS A INNER JOIN [dbo].[DAS] AS B ON A.DASId=B.DASId WHERE B.TestId=@TestSetupId
DELETE A FROM [dbo].[TestSetupHardware] AS A INNER JOIN [dbo].[DAS] as B ON A.DASId=B.DASId WHERE B.TestId=@TestSetupId
DELETE A FROM [dbo].[GroupHardware] AS A INNER JOIN [dbo].[DAS] as B on A.DASId=B.DASId WHERE B.TestId=@TestSetupId
DELETE A FROM [dbo].[DASChannels] AS A INNER JOIN [dbo].[DAS] AS B on A.DASId=B.DASId WHERE B.TestId=@TestSetupId
DELETE [dbo].[DAS] WHERE [TestId]=@TestSetupId
/*finally delete the test setup*/
DELETE FROM [dbo].[TestSetups] where TestSetupId = @TestSetupId
COMMIT TRANSACTION [tDeleteTestSetups]
END TRY
BEGIN CATCH
SET @errorNumber = error_number()
SET @errorMessage = error_message()
ROLLBACK TRANSACTION [tDeleteTestSetups]
END CATCH
END