Я создал следующую таблицу:
CREATE TABLE TestABC (
colID INT NOT NULL,
colName VARCHAR(10) NULL,
);
INSERT INTO TestABC
(colID, colName)
VALUES
(1,'ABC'),
(2,'DEF'),
(3,'GHI');
Когда я запускаю следующий запрос к приведенной выше таблице ...
DECLARE @Name varchar(max)
select @Name = colName from dbo.TestABC where colID = '3'
print @Name
Я получаю следующий ожидаемый результат, которыйэто хорошо:
GHI
Теперь я пытаюсь передать SELECT с моим параметром @Name внутри динамического SQL:
DECLARE @sql varchar(max)
DECLARE @Name varchar(max)
set @sql = '
select ' + @Name + ' = colName from dbo.TestABC where colID = ''3''
'
print @sql
Проблема, с которой я столкнулся, заключается в том, что внутридинамический SQL, мой параметр @Name не оценивается и выдает пустое значение или значение NULL.Кроме того, весь мой динамический параметр sql @sql также заканчивается NULL.
Я полностью понимаю, что, если я добавлю следующую дополнительную строку перед моим динамическим SQL, что @Name должно быть оценено правильно ...
SELECT @Name = colName from dbo.TestABC
Однако это не моя цель.Мне нужно, чтобы SELECT был полностью динамическим, так как в конечном итоге я буду передавать свой dbo.TestABC динамически.Поэтому я не могу предварительно назначить свой параметр @Name, как в приведенном выше SELECT.
Как мне заполнить параметры @Name и @sql в моем SELECT внутри моего динамического SQL?