SQL Standard


When working in an SQL database, we use the SELECT statement to retrieve the data from a given table and display it in the console. This is useful when we need to quickly fetch the results and understand the resulting data.

However, it comes to instances where we need to export the data of a SELECT statement into various formats. One such format is an XML file.

In SQL Server, we have access to a very powerful function to work with XML-related operations. The FOR PATH function allows us to generate an XML file from a table or a query that outputs the data.

In this tutorial, we will learn about this function. We start with the basics, function syntax, and example usage.

NOTE: We can use the FOR XML clause in top-level queries and in subqueries. In subqueries, we can use this clause inside an INSERT, UPDATE, and DELETE statements. However, in top-level queries, we can use it in SELECT statements only.


The following shows the basic syntax of the FOR XML clause in SQL Server:

SELECT column1, column2, ...

FROM table

FOR XML PATH (root_element, [type_mode])

In the given syntax:

  1. column1, column2…, – This specifies the columns that we wish to include in the XML output.
  2. table – This specifies the source table or query that provides the data for XML generation.
  3. root_element – This specifies the name of the XML root element.
  4. type_mode – This is an optional parameter that specifies the XML data type mode. The supported values include the following:
    1. RAW – The raw mode generates a single <row> element per row in the rowset that is returned by the SELECT statement.
    2. AUTO – This mode generates nesting in the resulting XML using heuristics based on the way the SELECT statement is specified. This provides the least control over the layout of the resulting XML file.
    3. EXPLICIT – Explicit mode provides more control over the shape of the XML file. This includes mixing the attributes and elements to determine the layout of the XML file.
    4. PATH – The PATH mode provides a simpler way to mix the elements and attributes. The PATH mode is a simpler way to introduce additional nesting for representing the complex properties.

Feel free to consult the documentation for more details on the various modes and how they work in generating the XML files.


Example 1: Basic Usage

Let us start with a simple example that can help to demonstrate how to use the FOR XML clause in SQL Server.

Suppose we have a table named “film” with the “film_id”, “film_title”, “release_year”, and “rating” columns.

Then, let us say we want to generate an XML document with a root element called <Film> and each employee as a separate <title> element.

SELECT film_id, film_title, release_year, rating

FROM film

FOR XML PATH (title)

In this example, we use the FOR XML PATH (“title”) to specify the root element as title.

Example 2: Adding Attributes

We can also add attributes to the XML elements using the FOR PATH clause. Let us add an attribute called “description” to each <title> element.

SELECT film_id, film_title, release_year, rating, 'N/A' AS '@description'

FROM film

FOR XML PATH ('title');

In this example, we include the @Description attribute with a constant value of “N/A”.


In this tutorial, we learned about the FOR XML clause in SQL Server which allows us to generate an XML file from the result of a query in the database. This is useful when we need to export the data to an XML file with custom formatting, etc. We recommend checking the docs for more details.

About the author

John Otieno

My name is John and am a fellow geek like you. I am passionate about all things computers from Hardware, Operating systems to Programming. My dream is to share my knowledge with the world and help out fellow geeks. Follow my content by subscribing to LinuxHint mailing list