> # Persisting a Result Set as an XML Data File

> The ODBC driver allows you to persist a result set as an XML data file with embedded schema. To implement XML persistence, a client application must do the following:

> 1. Turn on STATIC cursors. For example:

> SQLSetStmtAttr (hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_STATIC, SQL_IS_INTEGER)

> NOTE: A result set can be persisted as an XML data file only if the result set is generated using STATIC cursors. Otherwise, the following error is returned:

> Driver only supports XML persistence when using driver's static cursors.

> 2. Execute a SQL statement. For example:

> SQLExecDirect (hstmt, "Select * from GTABLE", SQL_NTS)

> 3. Persist the result set as an XML data file. For example:

> SQLSetStmtAttr (hstmt, SQL_PERSIST_AS_XML, "c:\temp\GTABLE.XML", SQL_NTS)

> NOTE: A new statement attribute is available to support XML persistence, SQL_PERSIST_AS_XML. A client application must call SQLSetStmtAttr with this new attribute as an argument. See the following table for the definition of valid arguments for SQLSetStmtAttr:

> Argument | Definition
> --- | ---
> StatementHandle | The handle of the statement that contains the result set to persist as XML.
> Attribute | SQL_PERSIST_AS_XML. This new statement attribute can be found in the file QESQLEXT.H, which is installed with the driver.
> ValuePtr | Pointer to a URL that specifies the full path name of the XML data file to be generated. The directory specified in the path name must exist, and if the specified file name exists, the file will be overwritten.
> StringLength | The length of the string pointed to by ValuePtr or SQL_NTS if ValuePtr points to a null terminated string.

> A client application can choose to persist the data at any time that the statement is in an executed or cursor-positioned state. At any other time, the driver returns the following message:

>     Function Sequence Error