8
0

DEX: Work in progress

This commit is contained in:
2026-02-25 16:36:19 +01:00
parent 7a97a7fe55
commit 143070e179
14 changed files with 275 additions and 122 deletions

View File

@@ -75,6 +75,7 @@ AS
BEGIN TRY
SET NOCOUNT ON;
SET XACT_ABORT ON;
-- declare new vars because of parameter sniffing
DECLARE @PROFILE_ID BIGINT = @pPROFILE_ID,
@@ -164,10 +165,29 @@ BEGIN TRY
@TBDEX_TMP_QUERY_COMMENT NVARCHAR(150) = NULL,
@TBDEX_TMP_QUERY_ADDED_WHO NVARCHAR(50) = NULL,
@TBDEX_TMP_QUERY_ADDED_WHEN DATETIME = NULL,
@PLACEHOLDER_ROW_COUNT INT = 0,
@PLACEHOLDER_ROW_INDEX INT = 0,
@RETURN_STATUS INT = 0,
@RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)),
@RETURN_ERROR_TEXT NVARCHAR(MAX) = '';
DECLARE @vTBDEX_TMP_QUERY_SOURCE TABLE (
[ROW_ID] INT IDENTITY(1,1) NOT NULL,
[GUID] BIGINT,
[PROFILE_ID] SMALLINT,
[BATCH_ID] NVARCHAR(25),
[QUERY] NVARCHAR(MAX),
[COMMENT] NVARCHAR(150),
[ADDED_WHO] NVARCHAR(50),
[ADDED_WHEN] DATETIME
);
DECLARE @vTBDEX_CFG_RESOURCES_CONST TABLE (
[ROW_ID] INT IDENTITY(1,1) NOT NULL,
[PLACEHOLDER_NAME] NVARCHAR(50) NOT NULL,
[PLACEHOLDER] NVARCHAR(MAX) NULL
);
PRINT '====================================================================================================';
PRINT @RETURN_STATUS_TEXT;
PRINT '';
@@ -222,8 +242,22 @@ BEGIN TRY
--==================================================-- Count main sql querys --==================================================--
SET @ROW_COUNT1 = ISNULL((SELECT COUNT(*) FROM [TBDEX_TMP_PROCESS_REFERENCES] WITH (SNAPSHOT)
WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [ADDED_WHO]=@BATCH_CREATOR),0);
SET @ROW_COUNT2 = ISNULL((SELECT COUNT(*) FROM [TBDEX_TMP_QUERY] WITH (SNAPSHOT)
WHERE [GUID] > 0 AND [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [QUERY] IS NOT NULL AND [ADDED_WHO]=@BATCH_CREATOR),0);
INSERT INTO @vTBDEX_TMP_QUERY_SOURCE([GUID],[PROFILE_ID],[BATCH_ID],[QUERY],[COMMENT],[ADDED_WHO],[ADDED_WHEN])
SELECT [GUID],[PROFILE_ID],[BATCH_ID],[QUERY],[COMMENT],[ADDED_WHO],[ADDED_WHEN]
FROM [TBDEX_TMP_QUERY] WITH (SNAPSHOT)
WHERE [GUID] > 0 AND [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID AND [QUERY] IS NOT NULL AND [ADDED_WHO]=@BATCH_CREATOR
ORDER BY [GUID] ASC;
INSERT INTO @vTBDEX_CFG_RESOURCES_CONST([PLACEHOLDER_NAME],[PLACEHOLDER])
SELECT [PLACEHOLDER_NAME],[PLACEHOLDER]
FROM [dbo].[VWDEX_RESOURCES]
WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE
ORDER BY [SEQUENCE] ASC;
SET @PLACEHOLDER_ROW_COUNT = ISNULL((SELECT COUNT(*) FROM @vTBDEX_CFG_RESOURCES_CONST),0);
SET @ROW_COUNT2 = ISNULL((SELECT COUNT(*) FROM @vTBDEX_TMP_QUERY_SOURCE),0);
SET @ROW_COUNT_SUM1 = (@ROW_COUNT1 + @ROW_COUNT2);
IF (@ROW_COUNT_SUM1 < 2) BEGIN
@@ -321,22 +355,21 @@ BEGIN TRY
-----------------------------------------------------------------------------------------------------------------------------------
SET @ROW_COUNTER2 = 0;
DECLARE CURSOR_TBDEX_TMP_QUERY CURSOR
LOCAL FAST_FORWARD FOR
SELECT [GUID] as 'TBDEX_TMP_QUERY_GUID', [PROFILE_ID] as 'TBDEX_TMP_QUERY_PROFILE_ID', [BATCH_ID] as 'TBDEX_TMP_QUERY_BATCH_ID',
[QUERY] as 'TBDEX_TMP_QUERY_QUERY', [COMMENT] as 'TBDEX_TMP_QUERY_COMMENT', [ADDED_WHO] as 'TBDEX_TMP_QUERY_ADDED_WHO',
[ADDED_WHEN] as 'TBDEX_TMP_QUERY_ADDED_WHEN'
FROM [TBDEX_TMP_QUERY] WITH (SNAPSHOT)
WHERE [PROFILE_ID]=@PROFILE_ID AND [BATCH_ID]=@BATCH_ID
ORDER BY [GUID] ASC;
OPEN CURSOR_TBDEX_TMP_QUERY
FETCH NEXT FROM CURSOR_TBDEX_TMP_QUERY INTO @TBDEX_TMP_QUERY_GUID,@TBDEX_TMP_QUERY_PROFILE_ID,@TBDEX_TMP_QUERY_BATCH_ID,@TBDEX_TMP_QUERY_QUERY,@TBDEX_TMP_QUERY_COMMENT,@TBDEX_TMP_QUERY_ADDED_WHO,@TBDEX_TMP_QUERY_ADDED_WHEN;
WHILE @@FETCH_STATUS = 0
WHILE (@ROW_COUNTER2 < @ROW_COUNT2)
BEGIN
SET @ROW_COUNTER2 += 1; -- Increase loop counter
SET @ROW_COUNTER2 += 1;
SELECT @TBDEX_TMP_QUERY_GUID = [GUID],
@TBDEX_TMP_QUERY_PROFILE_ID = [PROFILE_ID],
@TBDEX_TMP_QUERY_BATCH_ID = [BATCH_ID],
@TBDEX_TMP_QUERY_QUERY = [QUERY],
@TBDEX_TMP_QUERY_COMMENT = [COMMENT],
@TBDEX_TMP_QUERY_ADDED_WHO = [ADDED_WHO],
@TBDEX_TMP_QUERY_ADDED_WHEN = [ADDED_WHEN]
FROM @vTBDEX_TMP_QUERY_SOURCE
WHERE [ROW_ID] = @ROW_COUNTER2;
IF ((@ROW_COUNTER2 = 1) OR (@ROW_COUNTER2 = @ROW_COUNT2) OR (@ROW_COUNTER2 % 100 = 0)) BEGIN
PRINT concat('This is cursor (CURSOR_TBDEX_TMP_QUERY), loop nr: ',@ROW_COUNTER2);
END;
@@ -399,24 +432,17 @@ BEGIN TRY
SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE4%',ISNULL(@TBDEX_IN_REFERENCE4,''));
SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,'%REFERENCE5%',ISNULL(@TBDEX_IN_REFERENCE5,''));
DECLARE CURSOR_PLACEHOLDER CURSOR
LOCAL FAST_FORWARD FOR
SELECT [PLACEHOLDER_NAME] as 'Placeholder_Name', [PLACEHOLDER] as 'Placeholder'
FROM [TBDEX_CFG_RESOURCES] (NOLOCK)
WHERE [PROFILE_ID] IN (0,@PROFILE_ID) AND [ACTIVE] = @ACTIVE_FLAG AND LTRIM(RTRIM([PLACEHOLDER_TYPE])) = @PLACEHOLDER_TYPE
ORDER BY [SEQUENCE] ASC;
OPEN CURSOR_PLACEHOLDER
FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER;
WHILE @@FETCH_STATUS = 0
SET @PLACEHOLDER_ROW_INDEX = 1;
WHILE (@PLACEHOLDER_ROW_INDEX <= @PLACEHOLDER_ROW_COUNT)
BEGIN
SELECT @PLACEHOLDER_NAME = [PLACEHOLDER_NAME],
@PLACEHOLDER = [PLACEHOLDER]
FROM @vTBDEX_CFG_RESOURCES_CONST
WHERE [ROW_ID] = @PLACEHOLDER_ROW_INDEX;
SET @TBDEX_TMP_QUERY_QUERY = REPLACE(@TBDEX_TMP_QUERY_QUERY,concat('%',@PLACEHOLDER_NAME,'%'),ISNULL(@PLACEHOLDER,''));
FETCH NEXT FROM CURSOR_PLACEHOLDER INTO @PLACEHOLDER_NAME,@PLACEHOLDER;
SET @PLACEHOLDER_ROW_INDEX += 1;
END
CLOSE CURSOR_PLACEHOLDER;
DEALLOCATE CURSOR_PLACEHOLDER;
-----------------------------------------------------------------------------------------------------------------------------------
--=================================================-- Check first sql query --===================================================--
@@ -516,10 +542,7 @@ BEGIN TRY
END;
-----------------------------------------------------------------------------------------------------------------------------------
FETCH NEXT FROM CURSOR_TBDEX_TMP_QUERY INTO @TBDEX_TMP_QUERY_GUID,@TBDEX_TMP_QUERY_PROFILE_ID,@TBDEX_TMP_QUERY_BATCH_ID,@TBDEX_TMP_QUERY_QUERY,@TBDEX_TMP_QUERY_COMMENT,@TBDEX_TMP_QUERY_ADDED_WHO,@TBDEX_TMP_QUERY_ADDED_WHEN;
END
CLOSE CURSOR_TBDEX_TMP_QUERY;
DEALLOCATE CURSOR_TBDEX_TMP_QUERY;
-----------------------------------------------------------------------------------------------------------------------------------
FETCH NEXT FROM CURSOR_TBDEX_TMP_PROCESS_REFERENCES INTO @TBDEX_IN_GUID,@TBDEX_IN_PROFILE_ID,@TBDEX_IN_BATCH_ID,@TBDEX_IN_REFERENCE1,@TBDEX_IN_REFERENCE2,@TBDEX_IN_REFERENCE3,@TBDEX_IN_REFERENCE4,@TBDEX_IN_REFERENCE5,@TBDEX_IN_EXTERNAL_REFERENCE1,@TBDEX_IN_EXTERNAL_REFERENCE2,@TBDEX_IN_EXTERNAL_REFERENCE3,@TBDEX_IN_EXTERNAL_REFERENCE4,@TBDEX_IN_EXTERNAL_REFERENCE5,@TBDEX_IN_COMMENT,@TBDEX_IN_ADDED_WHO,@TBDEX_IN_ADDED_WHEN;
@@ -556,18 +579,6 @@ END TRY BEGIN CATCH
ROLLBACK TRANSACTION;
END;
PRINT 'ERROR: ' + @RETURN_ERROR_TEXT;
-----------------------------------------------------------------------------------------------------------------------------------
--===================================================-- Log result to table --===================================================--
IF (@LOG_LEVEL in ('INFO','WARN','ERROR')) BEGIN
EXEC [PRDEX_WRITE_LOG] @pLOG_LEVEL = N'ERROR', @pPROFILE_ID = @PROFILE_ID, @pBATCH_ID = @BATCH_ID,
@pREFERENCE1 = @REFERENCE1, @pREFERENCE2 = @REFERENCE2, @pREFERENCE3 = @REFERENCE3,
@pREFERENCE4 = @REFERENCE4, @pREFERENCE5 = @REFERENCE5, @pRETURN_CODE = @RETURN_STATUS,
@pMESSAGE1 = @RETURN_STATUS_TEXT, @pMESSAGE2 = @RETURN_ERROR_TEXT, @pADDED_WHO = @MY_PROCEDURE_NAME;
END;
-----------------------------------------------------------------------------------------------------------------------------------
--======================================================-- Output result --======================================================--
SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END;
SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120));