ASP.NET에서 중첩 FOR XML 쿼리 사용
적용 대상:SQL Server
Azure SQL 데이터베이스
Azure SQL Managed Instance
이 예제에서 ASP.NET 애플리케이션은 SQL Server에서 저장 프로시저를 실행하여 XML을 브라우저로 반환합니다. 저장 프로시저는 중첩된 쿼리를 사용하여 XML을 생성합니다. 중첩된 AUTO 모드 쿼리를 사용하여 형제를 생성하는 문서에 비슷한 SELECT 문이 표시됩니다. 이 예제에서는 중첩된 FOR XML 쿼리를 사용하여 SQL Server에서 요소 중심 XML을 생성하는 한 가지 방법을 보여 줍니다.
예시
CREATE PROC GetSalesOrderInfo AS
SELECT
(SELECT top 2 SalesOrderID, SalesPersonID, CustomerID,
(select top 3 SalesOrderID, ProductID, OrderQty, UnitPrice
from Sales.SalesOrderDetail
WHERE SalesOrderDetail.SalesOrderID = SalesOrderHeader.SalesOrderID
FOR XML AUTO, TYPE)
FROM Sales.SalesOrderHeader
WHERE SalesOrderHeader.SalesOrderID = SalesOrder.SalesOrderID
for xml auto, type),
(SELECT *
FROM (SELECT SalesPersonID, EmployeeID
FROM Sales.SalesPerson, HumanResources.Employee
WHERE SalesPerson.SalesPersonID = Employee.EmployeeID) As SalesPerson
WHERE SalesPerson.SalesPersonID = SalesOrder.SalesPersonID
FOR XML AUTO, TYPE, ELEMENTS)
FROM (SELECT SalesOrderHeader.SalesOrderID, SalesOrderHeader.SalesPersonID
FROM Sales.SalesOrderHeader, Sales.SalesPerson
WHERE SalesOrderHeader.SalesPersonID = SalesPerson.SalesPersonID
) as SalesOrder
ORDER BY SalesOrder.SalesOrderID
FOR XML AUTO, TYPE
GO
이는 .aspx 애플리케이션입니다. 이 코드는 저장 프로시저를 실행하고 브라우저에 XML을 반환합니다.
<%@LANGUAGE=C# Debug=true %>
<%@import Namespace="System.Xml"%>
<%@import namespace="System.Data.SqlClient" %><%
Response.Expires = -1;
Response.ContentType = "text/xml";
%>
<%
using(System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection("Data Source=server;Database=AdventureWorks;Integrated Security=SSPI;"))
using(System.Data.SqlClient.SqlCommand cmd = c.CreateCommand())
{
cmd.CommandText = "GetSalesOrderInfo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection.Open();
System.Xml.XmlReader r = cmd.ExecuteXmlReader();
System.Xml.XmlTextWriter w = new System.Xml.XmlTextWriter(Response.Output);
w.WriteStartElement("Root");
r.MoveToContent();
while(! r.EOF)
{
w.WriteNode(r, true);
}
w.WriteEndElement();
w.Flush();
}
%>
애플리케이션 테스트
AdventureWorks2022
데이터베이스에 다음 저장 프로시저를 만듭니다..aspx 애플리케이션을 c:\inetpub\wwwroot 디렉터리(GetSalesOrderInfo.aspx)에 저장합니다.
애플리케이션(
https://server/GetSalesOrderInfo.aspx
)을 실행합니다.