Мне нужно конвертировать старые данные из нескольких таблиц. Я только сейчас узнал, после написания хранимой процедуры, которая делает это для одной таблицы, что она также должна обрабатывать данные из пары других таблиц. Это означает, что моя процедура должна быть изменена, чтобы правильно справиться с этим. Я хотел бы делать это динамически, не вдаваясь в показатели производительности. Я узнал об использовании exe c sp_execute sql @SQLStatement, чтобы избежать проблем с производительностью динамического c SQL.
Однако, если я напишу ниже, я не получу результатов:
SET @SQLStatement = 'select CONVERT(XML, ' + @ConvColumn + ') ' + @AdditionalColumns + ' from ' + @ConvTable
INSERT INTO @TempDataConv
exec sp_executesql @SQLStatement
Тем не менее, если я напишу это явно, определяя таблицу и столбцы, это прекрасно работает:
INSERT INTO @TempDataConv
SELECT
DecPageID,
PolicyID,
PolicyNumber,
CONVERT(XML, DecInfo),
null
FROM [InternalPortal].[dbo].Decpages
Что может происходить? Поскольку никаких результатов не возвращается, я не уверен, как выяснить проблему. Я предполагаю, что, возможно, я не могу сделать ниже. Это правда? Стоит ли просто записать это в блоки if для разных таблиц?
INSERT INTO @TempDataConv
exec sp_executesql @SQLStatement