Это даст вам стол. Если вы не знаете имен столбцов XML, вам, вероятно, придется использовать динамический SQL (например, для «firstname varchar (20)« firstname »), вам придется заменить« firstname »на любое имя столбца XML , который я предполагаю, что вы определите во время выполнения):
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<people>
<person id="1">
<firstname>John</firstname>
<surname>Doe</surname>
</person>
<person id="2">
<firstname>Mary</firstname>
<surname>Jane</surname>
</person>
</people>
'
/* Create an internal representation of the XML document */
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/people/person',1)
WITH (id varchar(20),
firstname varchar(20) 'firstname',
surname varchar(20) 'surname')
EXECUTE sp_xml_removedocument @idoc
Результат:
id firstname surname
1 John Doe
2 Mary Jane