Я пытаюсь создать несколько запросов, передающих имя столбца динамически, но по какой-то причине возвращает имя столбца, а не значение. Я не очень хорошо знаком с этой техникой, потому что теперь @cmd пуст, потому что перед тем, как писать динамический запрос, я хотел бы убедиться, что передам правильные параметры. Другими словами, я хочу напечатать значение, которое находится в столбце A1.Динамический SQL-запрос возвращает имя столбца вместо значения
Может ли кто-нибудь рассказать или направить меня, чтобы получить значение вместо этого? Буду признателен за любую помощь.
HubFinal
id Cart PO A1 A1E
----------------------------------------------------------
01 Cart1 24432 upc1,1/25/2016,1 Available
-----------------------------------------------------------
02 Cart2 24888 upc10,1/25/2030,1 No Available
Запрос
WHILE (@i <= 1)
BEGIN
-- get Column Name Example A1
SET @Compartment = (SELECT compartment FROM @Compartment_table WHERE idx = @i);
-- get data from HUBFINAL to insert into HUBTEMP
SET @PO = (Select PO FROM HubFinal Where CartPlate [email protected]);
-- pass dynamically the comlumn name, in this case A1
SET @CompValue = (Select @Compartment From HubFinal Where CartPlate [email protected]);
Print @Compartment
Print @PO
Print @CompValue
--insert to final table
Declare @cmd nvarchar(4000) =
-- do something with values gotten above
EXEC(@cmd)
-- increment counter for next compartment
SET @i = @i + 1
END
Выход
-- this is what is printed
A1
24432
A1
Как мы могли возможно помочь, не зная действительный динамический запрос SQL ?. Во всяком случае, попробуйте напечатать '@ cmd', вы должны увидеть, почему вы получаете результаты, которые вы получаете – Lamak
Привет, Ламак, я не очень хорошо знаком с этой техникой, потому что теперь @cmd пуст, потому что перед тем, как написать динамический запрос, который мне нужен чтобы убедиться, что я передам правильные параметры. Другими словами, я хочу напечатать значение, которое находится в столбце A1. – Carlos
Проблема заключается в том, как вы пытаетесь использовать переменные. В третьем запросе вы выбираете имя столбца, которое было результатом первого запроса. Чтобы выполнить то, что вы пытаетесь сделать, потребуется динамический sql. Вы не можете использовать переменную, чтобы определить, какой столбец выбрать так. –