--This procedure takes a RegionsOfInterest string and stores the values in the --TestSetupROIs and ROIPeriodChannels tables. CREATE PROCEDURE [dbo].[sp_StringToRegionsOfInterestTables] ( @TestSetupId int, @RegionsOfInterest nvarchar(Max) ) AS BEGIN --DECLARE @TestSetupId int = 1 --DECLARE @RegionsOfInterest nvarchar(Max) = '[{"Suffix":"_ROI Period 1","Start":-0.6,"End":0.6,"IsEnabled":true,"IsDefault":true,"ChannelNames":["an1","an2","an3"]},{"Suffix":"_ROI Period 2","Start":-0.5,"End":0.5,"IsEnabled":true,"IsDefault":true,"ChannelNames":["an1","an3"]}]' DECLARE @CurrentSubString nvarchar(MAX) DECLARE @CurrentSubStringStartIndex int DECLARE @CurrentSubStringEndIndex int DECLARE @SuffixValue nvarchar(255) DECLARE @ROIStartValue float DECLARE @ROIEndValue float DECLARE @IsEnabledValue nvarchar(255) DECLARE @IsDefaultValue nvarchar(255) DECLARE @ChannelNames nvarchar(MAX) DECLARE @TestSetupROIId int -- [{"Suffix":"_ROI Period 1","Start"...},{"Suffix":"_ROI Period 2","Start"...}] SET @CurrentSubStringStartIndex = 1 WHILE (@CurrentSubStringStartIndex < LEN(@RegionsOfInterest)) BEGIN SET @CurrentSubStringEndIndex = CHARINDEX('}', @RegionsOfInterest, @CurrentSubStringStartIndex) + 1 SET @CurrentSubString = SUBSTRING(@RegionsOfInterest, @CurrentSubStringStartIndex, (@CurrentSubStringEndIndex - @CurrentSubStringStartIndex)) SET @SuffixValue = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'Suffix":"', '"') SET @ROIStartValue = CAST([dbo].[foo_ROIStringToValueString](@CurrentSubString, 'Start":', ',') AS FLOAT) SET @ROIEndValue = CAST([dbo].[foo_ROIStringToValueString](@CurrentSubString, 'End":', ',') AS FLOAT) SET @IsEnabledValue = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'IsEnabled":', ',') IF @IsEnabledValue = 'true' SET @IsEnabledValue = 1 ELSE SET @IsEnabledValue = 0 SET @IsDefaultValue = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'IsDefault":', ',') IF @IsDefaultValue = 'true' SET @IsDefaultValue = 1 ELSE SET @IsDefaultValue = 0 SET @ChannelNames = [dbo].[foo_ROIStringToValueString](@CurrentSubString, 'ChannelNames":[', ']') INSERT INTO TestSetupROIs VALUES (@TestSetupId, @SuffixValue, @ROIStartValue, @ROIEndValue, @IsEnabledValue, @IsDefaultValue) SET @TestSetupROIId = scope_identity() IF (@SuffixValue <> '' AND LEN(@ChannelNames) > 0) BEGIN DECLARE @CurrentChannelName nvarchar(255) DECLARE @ChannelNameStartIndex int DECLARE @ChannelNameEndIndex int -- "an1","an2","an3" SET @ChannelNameStartIndex = 2 WHILE (@ChannelNameStartIndex < LEN(@ChannelNames)) BEGIN SET @ChannelNameEndIndex = CHARINDEX('"', @ChannelNames, @ChannelNameStartIndex) - 1 SET @CurrentChannelName = SUBSTRING(@ChannelNames, @ChannelNameStartIndex, (@ChannelNameEndIndex - @ChannelNameStartIndex) + 1) INSERT INTO ROIPeriodChannels (TestSetupROIId, ChannelName) VALUES (@TestSetupROIId, @CurrentChannelName) SET @ChannelNameStartIndex = @ChannelNameEndIndex + 4 -- ","x END END SET @CurrentSubStringStartIndex = @CurrentSubStringEndIndex + 1 -- } END END