Возврат явных наборов результатов Open XML из функции табличных значений - PullRequest
0 голосов
/ 28 августа 2009

Я пытаюсь вернуть строки в форме Open XML из функции табличных значений в SQL Server (2008). Я иногда получаю сообщения об ошибках, когда выбираю результаты с помощью «для явного xml», что говорит о том, что порядок результатов не обязательно совпадает с порядком, который я вставляю в вывод TVF.

Итак, мой первый вопрос: так ли это?

Если так, то мой следующий вопрос: есть ли способ обойти это? Лучшее, что я смог до сих пор придумать, - это включить столбец id в вывод TVF, затем выбрать только другие столбцы, когда я его вызываю, и упорядочить по id. Проблема здесь в том, что это означает, что мне нужно каждый раз указывать все столбцы, а не просто выбирать *, что в данном случае очень неудобно (тем более, что у меня 42 таких TVF - все с разными столбцами).

Разве TVF и Explicit Open XML просто не смешиваются (что было бы настоящим позором, поскольку они кажутся подходящими), или я упускаю что-то, что поможет?

1 Ответ

1 голос
/ 28 августа 2009

Я нашел один компромисс. Это все еще немного неловко, но не так плохо, как необходимость указывать все столбцы.

Вы можете пометить столбцы в формате открытого XML как «скрыть»:

<code>
[Tagname!Tagnumber!!hide]

Если я добавлю столбец идентификаторов в свой вывод с именем, следующим за этой формой, я могу упорядочить его по своему внешнему выбору, но он не будет участвовать в выводе xml, если я использую для «явное xml».

Я бы все же предпочел ордер "только что сработал", но если это невозможно, я подумаю, что должен поделиться этим открытием для всех, кто заинтересован.

...