1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[SQL] inserting string instead of values in dynamic SQL

Discussão em 'Outras Linguagens' iniciado por Stack, Outubro 9, 2024 às 07:42.

  1. Stack

    Stack Membro Participativo

    I am trying to log parameter of SP in catch block, I have created dynamic string for parameter however when it insert into table it insert the string instead of value of parameter. below is my code.

    DECLARE @ErrorMessage VARCHAR(4000),
    @ErrorSeverity INT,
    @ErrorState INT,
    @ErrorProcedure VARCHAR(200),
    @ErrorLine INT,
    @ErrorNumber INT,
    @ErrorParams VARCHAR(MAX)='';

    -- Get the error information
    SET @ErrorMessage = ERROR_MESSAGE();
    SET @ErrorSeverity = ERROR_SEVERITY();
    SET @ErrorState = ERROR_STATE();
    SET @ErrorProcedure = ERROR_PROCEDURE();
    SET @ErrorLine = ERROR_LINE();
    SET @ErrorNumber = ERROR_NUMBER();

    DECLARE @SPParameter AS TABLE (Id INT IDENTITY PRIMARY KEY, ParaName VARCHAR(100))
    INSERT INTO @SPParameter (ParaName)
    SELECT [name]
    FROM sys.parameters
    WHERE OBJECT_ID = OBJECT_ID(@ErrorProcedure)

    DECLARE @minId INT, @maxId INT
    SELECT @minId = MIN(Id),@maxId = MAX(Id) FROM @SPParameter

    SET @ErrorParams = ''''

    WHILE @minId <= @maxId
    BEGIN
    SELECT @ErrorParams = @ErrorParams + ''+ParaName+' = ''+ISNULL(CAST('+CAST(ParaName AS varchar)+' AS VARCHAR),'''')+'', '
    FROM @SPParameter WHERE Id=@minId
    SET @minId = @minId + 1
    END

    SET @ErrorParams = LEFT(@ErrorParams, LEN(@ErrorParams) - 2)

    SET @ErrorParams = @ErrorParams + ''''''

    INSERT INTO ErrorLog (ErrorMessage, ErrorSeverity, ErrorState, ErrorProcedure, ErrorLine, ErrorNumber, ErrorParams)
    VALUES (@ErrorMessage, @ErrorSeverity, @ErrorState, @ErrorProcedure, @ErrorLine, @ErrorNumber, @ErrorParams);



    It is inserting string i have created dynamically. below is the string which is inserting into my log table

    '@Param1 = '+ISNULL(CAST(@Param1 AS VARCHAR),'')+', @Param2 = '+ISNULL(CAST(@Param2 AS VARCHAR),'')+', @Param3 = '+ISNULL(CAST(@Param3 AS VARCHAR),'')+', @Param4 = '+ISNULL(CAST(@Param4 AS VARCHAR),''

    Continue reading...

Compartilhe esta Página