обычно для использования в условиях фильтра.
аюсь сделать хранимую процедуру, которая использует 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 для отчетности. Когда у меня есть таблица, содержащая несколько строк на человека, каждая из которых содержит значение, я часто нуждаюсь в них в одной ячейке для пользователей.