sp_executesql does not return value
===

I need to be able to come up with list of columns for a given table.
When I run the following:

    DECLARE @ColList Varchar(Max)
    DECLARE @TabName varchar(100) = 'CT_CONF'
    
    SELECT  @ColList =  CASE WHEN @ColList IS NULL THEN '''' ELSE @ColList + ',' END + column_name
    					from INFORMATION_SCHEMA.COLUMNS
    					where TABLE_NAME = @TabName
    					  and DATA_TYPE not in ('xml','Text','Image','Geometry','Geography')
    					  and COLUMN_NAME not in ('LAST_MODIFIED')
    					order by ordinal_position					
    
    select @ColList

I get the output I need, however, when I try to run sp_executesql as below, I get nothing back. 

    DECLARE @TabName varchar(100) = 'CT_CONF'
    
    DECLARE @SQL NVarchar(Max)
    DECLARE @ColList Varchar(Max)
    Declare @Params nvarchar(Max)
    
    SET @SQL = N'	
    			select @ColList = CASE WHEN @ColList IS NULL THEN '''' ELSE @ColList + '','' END + column_name
    					from INFORMATION_SCHEMA.COLUMNS
    					where TABLE_NAME = ''@SourceTable''
    					  and DATA_TYPE not in (''xml'',''Text'',''Image'',''Geometry'',''Geography'')
    					  and COLUMN_NAME not in (''LAST_MODIFIED'')
    					order by ordinal_position
    			'
    
    set @Params = N'@ColList varchar(Max) OUTPUT'
    
    EXEC sp_executesql @SQL, @Params, @ColList OUTPUT
    
    select @ColList

What am I doing wrong???

Thanks,
Eugene