Добавить объявление в файл XML - PullRequest
1 голос
/ 28 апреля 2009

Создание XML из данных в базе данных путем вызова proc с bcp как

SET @SQL= 'bcp "exec dbo.proc" queryout '+ @FileName +' -w -r -t  -Sdd\SQL2005 -T '

(процесс производится ниже) Все хорошо => создает XML по желанию. Теперь задача состоит в том, чтобы добавить объявление к этому XML (<?xml version="1.0" ?>)

Как этого можно достичь либо в следующем разделе proc, либо в формате XML с другим файлом (содержащим объявление)

SELECT  ( SELECT TOP 1
                    ShiftDate AS "ShiftDate",
                    Shift AS "Shift"
          FROM      [TableName]
        FOR
          XML PATH(''),
              TYPE
        ),
        ( SELECT    EquipmentId AS "WasheryProductionDetails/EquipmentCode",
                    'n/a' AS "WasheryProductionDetails/ActivityCode",
                    'n/a' AS "WasheryProductionDetails/ReasonCode",
                    Parentmaterial AS "WasheryProductionDetails/WasheryFeed/MaterialCode",
                    ParentStockpile AS "WasheryProductionDetails/WasheryFeed/ROMStockpileCode",
                    CAST(ParentTonnes AS DECIMAL(18, 4)) AS "WasheryProductionDetails/WasheryFeed/FeedTonnes",
                    ChildMaterial AS "WasheryProductionDetails/WasheryOutput/MaterialCode",
                    ChildStockpile AS "WasheryProductionDetails/WasheryOutput/ProductStockpileCode",
                    CAST(ChildTonnes AS DECIMAL(18, 4)) AS "WasheryProductionDetails/WasheryOutput/ProductTonnes"
          FROM      [TableName]
        FOR
          XML PATH(''),
              TYPE
        )
FOR     XML PATH(''),
            ROOT('WasheryProduction')

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 июля 2010
Declare @SQL varchar(8000)
Declare @xml xml
Declare @strXML as varchar(max)

set @xml = (select * from <tableName> for xml path(''))
set @strXML='< ? xml version = "1.0" ? >' + convert(varchar(max), @xml)

select @strXML

set @SQL ='bcp "select '''+@strXML+'''"  QueryOut "C:\xmlFile.xml" -r -w -t -T -S '

Exec master..xp_cmdshell @SQL
2 голосов
/ 29 апреля 2009

Эта страница предполагает, что вам нужно жестко закодировать декларацию:

SELECT

'<?xml version="1.0" ?>'

+
SELECT  ( SELECT TOP 1
... rest of your code goes here...

РЕДАКТИРОВАТЬ: изменил "UNION ALL" (что было довольно явно неправильно) на "+" (оба взяты со связанной страницы.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...