Необходимо запустить динамический SQL для DB2 на MS SQL через OpenQuery, получить результаты обратно в JSON, а затем вернуть его как выходной параметр в хранимой процедуре
Я пытался использовать переменную таблицы в качестве примеракод показывает, но я получаю эту ошибку:
Предложение FOR JSON не допускается в операторе INSERT
Я также пытался обернуть запрос в CTE,но, учитывая изменения имени столбца JSON, я не могу использовать * или получаю эту ошибку:
Не указано имя столбца для столбца 1 таблицы tbl.
Так что я в растерянности.Мне нужно запустить это и получить JSON в параметре Output, но, учитывая, что мне нужно смешать вызов DB2 через OpenQuery и динамический SQL, чтобы установить параметр, я не могу найти синтаксис, который работает.
create procedure uspTesting (
@inAccountNumber nvarchar(20),
@outJSON nvarchar(max) output)
as
begin declare @result table (ResultJson nvarchar(max));
declare @tsql nvarchar(4000) = '
select name, age
from openquery(db2link,''
select name,
age
from db2.account
where accountnumber = ''''' + @inAccountNumber + ''''')'') tbl for json auto';
insert into @result
EXEC (@TSQL);
select @outJSON = ResultJson from @result; End
Результаты, которые я ищу, - это строка JSON в выходном параметре @ outJSON.