SELECT x.Event.value('@ID', 'varchar(10)')
AS EventID,x.Event.value('@EventDesc [1]', 'varchar(35)')
AS Description, x.Event.value ('AvailSeats[1]', 'int')
AS TotalSeats, x.Event.value('Enrolled[1]', 'int')
AS Enrolled,x.Event.value ('AvailSeats[1]', 'int')x.Event.value('Enrolled[1]', 'int')
AS Remaining
FROM @xmldoc.nodes('//EventData/Event')
AS x(Event);
This query uses
the value() XML method to extract values of specific elements and attributes.
However, the value() method must return a single value, and the XML contains multiple
events. Therefore, the correct query includes the nodes() XML method in the FROM
clause of the query. The nodes() method accepts an XQuery string and returns
all of the specified nodes as a result set. In this scenario, the nodes()
method returns a result set that contains one row for each event. Each row
contains the corresponding XML for the event. Then, in the SELECT list, the
table alias defined is used with the value() method to return the details for
each specific event. DBA/Developer could also use the nodes() method to
separate XML. For example, the following statement would generate a result set
containing a single xml column, Events, with each row containing the XML
representing a specific event.
SELECT
x.Event.query ('.')
AS EventsFROM @xmldoc.nodes ('//EventData/Event')
AS x (Event);
No comments:
Post a Comment