Hãy xem xét một ví dụ để tạo XML:
CREATE PROC GenerateXMLproc
AS
SELECT [Name], ProductNumber, Color
FROM dbo.Product
FOR XML raw(‘Product’), elements, root(‘Products’)
Bây giờ chúng ta sẽ thảo luận về các tùy chọn được đề cập ở trên để lưu dữ liệu XML này:
- Sử dụng Quy trình được Lưu trữ CLR: Trong phương pháp này, chúng ta có thể tạo một thủ tục được lưu trữ CLR sẽ lấy dữ liệu XML được tạo, tên tệp và vị trí của tệp làm tham số đầu vào. Và sau đó nó có thể xử lý XML đó theo yêu cầu và có thể lưu tệp XML đó vào vị trí mong muốn.
Tạo quy trình được lưu trữ CLR:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SaveXMLOutput(SqlXml XmlData, SqlString Filename)
{
//Save the XML data being passed to the SP to a file location
//specify the name of the file suppiled to the SP
XmlDocument xmlDoc = new XmlDocument();
SqlPipe output = SqlContext.Pipe;
xmlDoc.LoadXml(XmlData.Value);
xmlDoc.Save(Filename.Value);
}
CREATE ASSEMBLY SaveXMLOutputAssembly
from ‘C:\Temp\SaveXMLOutput.dll’
WITH PERMISSION_SET = EXTERNAL_ACCESS
Tạo thủ tục được lưu trữ từ DLL / Assembly đã nhập:
CREATE PROCEDURE SaveXMLOutput
@xmldata XML,
@filename nvarchar(1024)
AS
EXTERNAL NAME SaveXMLOutputAssembly.[XMLOutput].SaveXMLOutput
execute SaveXMLOutput ‘Pass the XML Data generated from other SP’
,‘ C:\Temp\MyXML.xml’