Utilizando sp_executesql con params se queja de la necesidad de declarar una variable

Estoy intentando hacer un procedimiento almacenado que use sp_executesql. He buscado mucho y duroaqu, pero no puedo ver lo que estoy haciendo incorrectamente en mi código. Soy nuevo en procedimientos almacenados / funciones de servidor sql en general, así que supongo que me falta algo simple. La modificación del procedimiento almacenado ocurre bien, pero cuando intento ejecutarlo, aparece un error.

El error dice.

Msg 1087, Level 15, State 2, Line 3
Must declare the table variable "@atableName"

El procedimiento se ve así.

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[sp_TEST]
    @tableName varchar(50),
    @tableIDField varchar(50),
    @tableValueField varchar(50)
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @SQLString nvarchar(500);
    SET @SQLString = N'SELECT DISTINCT @aTableIDField FROM @atableName';
    EXEC sp_executesql @SQLString,
            N'@atableName varchar(50),
              @atableIDField varchar(50),
              @atableValueField varchar(50)',
            @atableName = @tableName,
            @atableIDField = @tableIDField,
            @atableValueField = @tableValueField;
END

Y estoy tratando de llamarlo con algo como esto.

EXECUTE sp_TEST 'PERSON', 'PERSON.ID', 'PERSON.VALUE'

Este ejemplo no agrega nada especial, pero tengo una gran cantidad de vistas que tienen un código similar. Si pudiera hacer que este procedimiento almacenado funcionara, podría reducir considerablemente la cantidad de código repetido.

Gracias por tu ayuda

Editar Estoy intentando hacer esto para facilitar el mantenimiento. Tengo varias vistas que básicamente tienen el mismo sql exacto, excepto que el nombre de la tabla es diferente. Los datos se llevan a la instancia del servidor SQL con fines informativos. Cuando tengo una tabla que contiene varias filas por identificación de persona, cada una con un valor, a menudo las necesito en una sola celda para los usuarios.

Respuestas a la pregunta(3)

Su respuesta a la pregunta