Я унаследовал 1500-строчную хранимую процедуру, которая объявляет множество переменных, которые часто меняют состояние на протяжении всего срока действия процедуры. У нас есть логическая ошибка, которая оказалась чрезвычайно трудной для отслеживания и как таковая была поставлена задача записать переменные в течение конечного времени в таблицу журналов. Мое решение состоит в том, чтобы взять каждую из переменных и наполнить их в XML и записать их в таблицу без индексов, чтобы она была настолько быстрой, насколько возможно, во время записи. Это немного в последнюю очередь, но у нас есть расхождение на миллион долларов, преодолевающее это решение, и не так много времени, чтобы копать.FOR XML без FROM
Таким образом, решение будет что-то вроде этого в течение периода недели, когда мы бежим процедурный:
- Процедура Объявляет и инициализирует данных в переменные.
- Функция называется запись штатам
- Процедура делает кучу более изменение кода состояния
- функция вызывается для записи штатам
- Процедура делает многое другое.
- Функция вызывается для записи состояний.
Мой вопрос в том, что.
DECLARE @TESTSTRING VARCHAR(MAX)
DECLARE @TESTINTEGER INT
DECLARE @TESTDATE DATETIME = GETDATE()
SELECT @TESTSTRING, @TESTINTEGER, @TESTDATE FOR XML...
Могу ли я вывести переменные как XML, просто выбрав их таким образом? Обычно я знаю, что синтаксис FOR XML требует, чтобы он пришел после предложения FROM. Который в этом случае я не буду. Если это не так ... Как это дорого?
DECLARE @TESTSTRING VARCHAR(MAX)
DECLARE @TESTINTEGER INT
DECLARE @TESTDATE DATETIME = GETDATE()
SELECT
*
FROM
(SELECT @TESTSTRING AS TESTSTRING, @TESTINTEGER AS TESTINTEGER, @TESTDATE AS TESTDATE) AS S
FOR XML PATH('VAR'), ROOT('TESTTABLE')
я не ставил его в моем примере, но я буду лавировать на ЭЛЕМЕНТОВ XSINIL, который только placehold для нулям. Я не слишком беспокоился об инициализации, как вы это делали в своем примере. Но я должен был указать. Спасибо за быстрый ответ! –
На самом деле это ответ на мой вопрос. Просто попробовал вариант того, что вы сделали с переменной @outputxml. Спасибо огромное! –