Динамический эквивалент INSERT INTO с использованием EXEC

Я пытаюсь создать эквивалент следующего:

DROP TABLE IF EXISTS [jerry].[dbo].[purchases]
SELECT * INTO [jerry].[dbo].[purchases] FROM OPENQUERY(OLAP, '

    sql code
');

используяEXEC(см. этот вопрос здесь)

При этом я не могу использовать SELECT * INTO в соответствии с несколько источников (и этот)

Я нашел несколько других ресурсов, где я могу создать новую таблицу, используя EXEC, однако я не знаю точную структуру результирующей таблицы (количество столбцов, типы столбцов, имена столбцов и т. д.), поэтому она должна быть динамической.

Следующий код дает мне точную результирующую таблицу, которую я хочу, но я не смог понять, как создать таблицу purchases с результирующими данными из приведенного ниже запроса:

-- EXEC master.dbo.sp_serveroption @server=N'OLAP', @optname=N'rpc out', @optvalue=N'true'
DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'code'
EXEC (@sqlcode) AT OLAP

Я пробовал использовать следующее: SELECT * INTO [jerry].[dbo].[purchases] FROM OPENROWSET('EXEC (@sqlcode) AT OLAP') но получаю ошибку Incorrect syntax near ')'.

Я также пробовал (просто посмотреть):

CREATE TABLE [jerry].[dbo].[purchases] ([Transaction_Date] DATE, [Requirement_Date] DATE, [Element] NVARCHAR(256), [Trx_Quantity] NVARCHAR(256), [Part_Number] NVARCHAR(256), [NHA_Part_Number] NVARCHAR(256), [Group] NVARCHAR(256), [Details] NVARCHAR(256));
INSERT INTO [jerry].[dbo].[purchases]
EXEC (@sqlcode) AT OLAP

И получить:

OLE DB provider "OraOLEDB.Oracle" for linked server "OLAP" returned message "Unable to enlist in the transaction.".
Msg 7391, Level 16, State 2, Line 208
The operation could not be performed because OLE DB provider "OraOLEDB.Oracle" for linked server "OLAP" was unable to begin a distributed transaction.

ошибка.

Извините, если это простой логический вопрос - я чувствую, что исчерпал свои исследовательские способности, пытаясь найти решение, поскольку я очень новичок в SQL Server. Я также работаю в SSMS 2017, если это поможет.

Не уверен, что это поможет, но sp_describe_first_result_set принимает запрос (вероятно, exec... тоже) в качестве параметра и возвращает структуру набора результатов.

George Menoutis 31.05.2019 15:48

Спасибо @GeorgeMenoutis. Я не уверен, что это полностью решает эту проблему, но я ценю путь, по которому нужно следовать.

artemis 31.05.2019 15:57

Два решения для части «распределенной транзакции» вашего вопроса можно найти здесь: stackoverflow.com/questions/6999906/…

Ed Harper 31.05.2019 16:09

К сожалению, тоже не может - не администратор базы данных - сбой с ошибкой 15247, отсутствие разрешений

artemis 31.05.2019 16:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ можно найти в этом посте: Создать новую таблицу с результатами из EXEC

DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'sqlcode'

truncate table [jerry].[dbo].[purchases]
insert into [jerry].[dbo].[purchases]
exec ( @sqlcode ) at OLAP

Другие вопросы по теме