Hitscotty
2/28/2018 - 1:21 PM

Universal SP Logger

Universal Logging Stored procedure with dynamic sql

CREATE PROCEDURE sp_universallogger 
	@Table as nvarchar(50),
	@Columns as nvarchar(max),
	@Values as nvarchar(max)
AS
	BEGIN
		DECLARE @SQL as nvarchar(max)
		SET @SQL = '
					DECLARE @Table as nvarchar(max)
					SET @Table = '''+ @Table +'''

					DECLARE @Columns as nvarchar(max)
					SET @Columns = ''' + @Columns + '''
		
					DECLARE @Values as nvarchar(max)
					SET @Values= ''' + @Values + '''

					INSERT INTO ' + @Table + ' (' + @Columns + ') 
					SELECT 
						' + @Columns + '
					FROM
					(
						select B.Value AS [ValueData], A.Value AS [ColumnName] FROM (select * from [SJ].[DBO].Split(@Columns, '','')) A
						INNER JOIN (select * from [SJ].[DBO].Split(@Values, '','')) B  ON A.Id = B.id
						) T
					PIVOT 
					(
						MAX([ValueData]) for ColumnName in (' + @Columns + ')
					) P'
					
		EXECUTE sp_executesql @SQL
	END
GO