Некоторое время назад я написал приложение, основанное на XML, выходящем из базы данных MySQL 5.0. Он получил этот вывод XML, вызвав клиента mysql
напрямую, используя параметр командной строки --xml
; это сделало вывод MySQL XML, который выглядел примерно так:
<resultset statement="SELECT * FROM tablename "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="some_int">2</field>
<field name="some_varchar">a string</field>
</row>
</resultset>
Теперь я пытаюсь перейти на MS SQL 2008. У меня все таблицы перенесены, и клиентская сторона может вызывать почти все, что захочет, так что никаких проблем нет. Моя проблема в том, чтобы заставить MS SQL выводить ожидаемый XML - есть ли простой способ создать такую же структуру?
До сих пор я смотрел на параметр FOR XML
в операторе SELECT
, и он кажется очень близким к тому, что я хочу сделать (используя вариант PATH
), но есть один незначительный трюк: он не больше не выводит <field>
тегов, но вместо этого присваивает тегам имя с именем столбца, поэтому приведенный выше XML становится:
<row>
<some_int>2</some_int>
<some_varchar>a string</some_varchar>
</row>
(Обратите внимание, что тег <resultset>
также пропал; это не такая уж большая проблема, но если MS SQL тоже может это сгенерировать, бонусные очки.)
Любой простой способ получить ту же XML-структуру из MS SQL, что и MySQL, кроме написания моего собственного генератора XML? В идеале я хотел бы использовать любую комбинацию FOR XML
в командах SELECT
, sqlcmd
или osql
для создания правильного текста - не обязательно должно быть красиво.
Редактировать: Утверждение, которое я выполняю, очень простое SELECT * FROM tablename
.