обычно для использования в условиях фильтра.

аюсь сделать хранимую процедуру, которая использует sp_executesql. Я долго и упорноВот, но я не вижу, что я делаю неправильно в моем коде. Я новичок в хранимых процедурах / SQL Server функции в целом, поэтому я предполагаю, что я пропускаю что-то простое. Хранимая процедура alter происходит нормально, но когда я пытаюсь ее запустить, я получаю сообщение об ошибке.

Ошибка говорит.

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

Процедура выглядит следующим образом.

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

И я пытаюсь назвать это чем-то вроде этого.

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

Этот пример не добавляет ничего особенного, но у меня есть большое количество представлений, которые имеют похожий код. Если бы я мог заставить эту хранимую процедуру работать, я мог бы значительно сократить количество повторяющегося кода.

Спасибо за вашу помощь.

Редактировать: Я пытаюсь сделать это для облегчения обслуживания. У меня есть несколько представлений, которые в основном имеют одинаковый точный sql за исключением того, что имя таблицы отличается. Данные передаются на экземпляр сервера SQL для отчетности. Когда у меня есть таблица, содержащая несколько строк на человека, каждая из которых содержит значение, я часто нуждаюсь в них в одной ячейке для пользователей.

Ответы на вопрос(1)

Ваш ответ на вопрос