8
0
Files
Skriptentwickung/current/[DD_ECM]-Database/DEX_SQL/[PRDEX_WRITE_LOG].sql
2026-02-24 16:43:48 +01:00

140 lines
6.1 KiB
Transact-SQL
Raw Blame History

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- [PRDEX_WRITE_LOG]
-- =================================================================
-- Writes log mesages to table [TBDEX_RUN_LOG]
--
-- Returns: INTEGER; 0 = ok; 0 <> nicht ok
-- =================================================================
-- Copyright (c) 2025 by Digital Data GmbH
--
-- Digital Data GmbH <20> Ludwig-Rinn-Strasse 16 <20> D-35452 Heuchelheim
-- Tel.: 0641/202360 <20> E-Mail: info-flow@digitaldata.works
-- =================================================================
-- Creation Date / Author: 01.08.2025 / MK
-- Version Date / Editor: 01.08.2025 / MK
-- Version Number: 1.0.0.0
-- =================================================================
-- History:
-- 01.08.2025 / MK - First Version
CREATE OR ALTER PROCEDURE [dbo].[PRDEX_WRITE_LOG](
@pLOG_LEVEL NVARCHAR(25),
@pPROFILE_ID BIGINT,
@pBATCH_ID NVARCHAR(25),
@pREFERENCE1 NVARCHAR(150),
@pREFERENCE2 NVARCHAR(150) = NULL,
@pREFERENCE3 NVARCHAR(150) = NULL,
@pREFERENCE4 NVARCHAR(150) = NULL,
@pREFERENCE5 NVARCHAR(150) = NULL,
@pRETURN_CODE INT,
@pMESSAGE1 NVARCHAR(max),
@pMESSAGE2 NVARCHAR(max) = NULL,
@pMESSAGE3 NVARCHAR(max) = NULL,
@pMESSAGE4 NVARCHAR(max) = NULL,
@pMESSAGE5 NVARCHAR(max) = NULL,
@pCOMMENT NVARCHAR(250) = NULL,
@pADDED_WHO NVARCHAR(50) = NULL
)
AS
BEGIN TRY
SET NOCOUNT ON;
SET XACT_ABORT ON;
-- declare new vars because of parameter sniffing
DECLARE @LOG_LEVEL NVARCHAR(25) = ISNULL(UPPER(@pLOG_LEVEL),'UNKNOWN'),
@PROFILE_ID BIGINT = @pPROFILE_ID,
@BATCH_ID NVARCHAR(25) = @pBATCH_ID,
@REFERENCE1 NVARCHAR(150) = ISNULL(@pREFERENCE1,'<NO REFERENCE GIVEN!>'),
@REFERENCE2 NVARCHAR(150) = @pREFERENCE2,
@REFERENCE3 NVARCHAR(150) = @pREFERENCE3,
@REFERENCE4 NVARCHAR(150) = @pREFERENCE4,
@REFERENCE5 NVARCHAR(150) = @pREFERENCE5,
@RETURN_CODE INT = ISNULL(@pRETURN_CODE,99999),
@MESSAGE1 NVARCHAR(max) = ISNULL(@pMESSAGE1,'<NO MESSAGE GIVEN!>'),
@MESSAGE2 NVARCHAR(max) = @pMESSAGE2,
@MESSAGE3 NVARCHAR(max) = @pMESSAGE3,
@MESSAGE4 NVARCHAR(max) = @pMESSAGE4,
@MESSAGE5 NVARCHAR(max) = @pMESSAGE5,
@COMMENT NVARCHAR(250) = @pCOMMENT,
@ADDED_WHO NVARCHAR(50) = ISNULL(@pADDED_WHO,OBJECT_NAME(@@PROCID));
-- declare runtime vars
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
DECLARE @ACTIVE_FLAG BIT = 1,
@INACTIVE_FLAG BIT = 0,
@ERROR_MESSAGE NVARCHAR(4000),
@ERROR_STATE INT,
@ERROR_SEVERITY INT,
@RETURN_STATUS NVARCHAR(50) = 0,
@RETURN_STATUS_TEXT NVARCHAR(MAX) = concat('START PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(varchar(50),GETDATE(),120)),
@RETURN_ERROR_TEXT NVARCHAR(MAX) = '';
--================================================-- write log if table exists --================================================--
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'TBDEX_RUN_LOG') BEGIN
--====================================================-- exception / error --====================================================--
SET @RETURN_STATUS = 50015;
SET @RETURN_STATUS_TEXT = concat('','');
SET @RETURN_ERROR_TEXT = concat('Cannot find target table ([TBDEX_RUN_LOG]) for logging!','');
THROW @RETURN_STATUS,@RETURN_ERROR_TEXT,1;
-----------------------------------------------------------------------------------------------------------------------------------
END; ELSE BEGIN
--=====================================================-- Write log line --======================================================--
BEGIN TRANSACTION;
INSERT INTO [TBDEX_RUN_LOG]([LOG_LEVEL], [PROFILE_ID], [BATCH_ID], [REFERENCE1], [REFERENCE2], [REFERENCE3], [REFERENCE4], [REFERENCE5], [RETURN_CODE], [MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [MESSAGE5], [COMMENT], [ADDED_WHO], [ADDED_WHEN])
VALUES(@LOG_LEVEL, @PROFILE_ID, @BATCH_ID, @REFERENCE1, @REFERENCE2, @REFERENCE3, @REFERENCE4, @REFERENCE5, @RETURN_CODE, @MESSAGE1, @MESSAGE2, @MESSAGE3, @MESSAGE4, @MESSAGE5, @COMMENT, @ADDED_WHO, GETDATE());
IF (@@TRANCOUNT > 0) BEGIN
COMMIT TRANSACTION;
END;
-----------------------------------------------------------------------------------------------------------------------------------
END;
-----------------------------------------------------------------------------------------------------------------------------------
RETURN @RETURN_STATUS;
END TRY BEGIN CATCH
--====================================================-- exception / error --====================================================--
IF (@@TRANCOUNT > 0) BEGIN
ROLLBACK TRANSACTION;
END;
PRINT 'ERROR: ' + @RETURN_ERROR_TEXT;
-----------------------------------------------------------------------------------------------------------------------------------
--======================================================-- 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));
SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE()));
PRINT 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT;
PRINT @RETURN_STATUS_TEXT;
PRINT '====================================================================================================';
-----------------------------------------------------------------------------------------------------------------------------------
--==================================================-- Write to sql ERRORLOG --==================================================--
SELECT @ERROR_MESSAGE = ERROR_MESSAGE(),
@ERROR_SEVERITY = ERROR_SEVERITY(),
@ERROR_STATE = ERROR_STATE();
RAISERROR (@ERROR_MESSAGE,@ERROR_SEVERITY,@ERROR_STATE);
-----------------------------------------------------------------------------------------------------------------------------------
RETURN @RETURN_STATUS;
END CATCH;
GO