У меня есть следующий тестовый запрос, который мне нужно сделать динамическим.
В основном хранимая процедура будет передана @json, и ей необходимо вернуть имена столбцов, которые переданы в этой переменной.
Возможно ли это и как я могу это сделать?
declare @json varchar(max)
set @json = '["FirstName", "LastName","DOB"]';
select *
from OPENJSON( @json )
select
FirstName,
LastName,
DOB
from Client
У меня есть это, что работает, но я не уверен, хороший ли это вариант и есть ли лучший способ
declare @json varchar(max)
declare @columnames varchar (200)
declare @sqlquery nvarchar(200)
set @json = '["FirstName", "LastName","DOB"]';
set @columnames =''
select @columnames =
case when @columnames = ''
then value
else @columnames + coalesce(',' + value, '')
end
from OPENJSON( @json )
set @sqlquery = 'select ' + @columnames + ' from Client'
EXEC SP_EXECUTESQL @sqlquery
Обычно переменная @json может содержать одно, несколько или все поля ниже, а со временем и большее количество.
set @json = '["FirstName", "LastName","DOB","DrugName,"Age","AgeGroup","Overdose","VerificationCode","Gender"]';
SELECT field1,field2,field3 FROM Table
(т.е. каждое поле). Затем внутри приложения он решает (на основе вашего выбора пользователя), что на самом деле показано. Вот что я имею в виду под пар s ed. Возможно, это нечто большее, чем вы объяснили. - person Nick.McDermaid   schedule 02.01.2017