Вставка XML в SQL Server - PullRequest
       34

Вставка XML в SQL Server

1 голос
/ 07 февраля 2012

Я хочу вставить эти данные XML в SQL Server 2008

<rewriteMap name="OldStaticUrl">
   <add key="/about/" value="/about" />
   <add key="/2march2012" value="/community/0770/welcome-to-electronic-musicians-march-2012-links-page/147452" />
</rewriteMap>

Я использую этот запрос SQL

DECLARE @hdoc INT
DECLARE @doc varchar(1000)

SET @doc = '<rewriteMap name="OldStaticUrl">
               <add key="/about/" value="/about" />
               <add key="/2march2012" value="/community/0770/welcome-to-electronic-musicians-march-2012-links-page/147452" />
            </rewriteMap>'

 EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc

 SELECT vanity, originalurl
  FROM Openxml(@hdoc, '/rewriteMap/add',1) 
  WITH (vanity varchar(1000), originalurl varchar(1000))

Но я получаю нулевое значение в наборе результатов, на самом делеесли я использую select * from openxml, я получаю несколько строк, некоторые из которых содержат правильные данные.

1 Ответ

3 голосов
/ 07 февраля 2012

Вместо литералов vanity и originalurl следует использовать key и value соответственно.
Попробуйте этот запрос:

DECLARE @hdoc INT
DECLARE @doc varchar(1000)
SET @doc = '<rewriteMap name="OldStaticUrl">
                <add key="/about/" value="/about" />
                <add key="/2march2012" value="/community/0770/welcome-to-electronic-musicians-march-2012-links-page/147452" />
            </rewriteMap>'
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc
SELECT [key], value
FROM Openxml( @hdoc, '/rewriteMap/add', 1) WITH ( [key] varchar(1000), value varchar(1000) )
...