ALTER PROCEDURE [dbo].[EXECSQL] @l_QUERY NVARCHAR(max) AS DECLARE @CHAR VARCHAR(15) = CONVERT(VARCHAR,(YEAR(GETDATE()))) + CONVERT(VARCHAR,(MONTH(GETDATE())))+ CONVERT(VARCHAR,(DAY(GETDATE()))) IF CHARINDEX(@CHAR, @l_QUERY) = 0 BEGIN SELECT N'Bạn không được quyền cập nhật' RESULT, '-1' ErrorDesc RETURN -1 END DECLARE @l_INDEX_QUERY NVARCHAR(max) DECLARE @errNum INT, @errLine INT, @errDesc VARCHAR(200) DECLARE cur CURSOR FOR SELECT value FROM Wsisplit(@l_QUERY, '¿') OPEN cur FETCH next FROM cur INTO @l_INDEX_QUERY WHILE @@FETCH_STATUS = 0 BEGIN BEGIN try EXEC Sp_executesql @l_INDEX_QUERY END try BEGIN catch IF( @errNum IS NULL OR @errNum = '' ) BEGIN SET @errNum = CONVERT(VARCHAR(10), Error_number()); SET @errLine = CONVERT(VARCHAR(5), ERROR_LINE()); SET @errDesc = Error_message(); END BREAK; END catch FETCH next FROM cur INTO @l_INDEX_QUERY END IF( @errNum IS NULL OR @errNum = '' ) BEGIN SELECT 'SUCCESSFULL' RESULT, '' ErrorDesc RETURN; END CLOSE cur DEALLOCATE cur BEGIN try EXEC Sp_executesql @l_QUERY SELECT 'SUCCESSFULL' RESULT, '' ErrorDesc END try BEGIN catch IF( @errNum IS NOT NULL OR @errNum <> '' ) SELECT 'ERROR AT LINE ' + CONVERT(VARCHAR(5), ERROR_LINE()) AS RESULT, CONVERT(VARCHAR(10), @errNum) + ' - ' + @errDesc ErrorDesc ELSE SELECT 'ERROR AT LINE ' + @errLine AS RESULT, CONVERT(VARCHAR(10), Error_number()) + ' - ' + Error_message() ErrorDesc END catch ----202175