Aracılığıyla paylaş


Iç içe for xml sorguları asp kullanın.NET

Örneğin, bir asp.net uygulama xml SQL Server saklı yordamı yürütmek yoluyla bir tarayıcıya döndürür. Saklı yordam kullanarak iç içe geçmiş sorgular xml üretir. Benzer bir select deyimi konusunda gösterilen Üreten bir iç içe auto modu sorgusu kullanarak eşi. Bu örnek, öğe merkezli bir xml oluşturmak için iç içe for xml sorgular kullanmak için bir yol gösterir SQL Server.

Örnek

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 uygulama budur. Bu saklı yordam yürütür ve xml tarayıcıya döndürür:

<%@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();
}
%>

Uygulama sınamak için

  1. Saklı yordam oluşturmak AdventureWorks2012 veritabanı.

  2. .Aspx uygulama c:\inetpub\wwwroot dizininde (GetSalesOrderInfo.aspx) kaydedin.

  3. Uygulama (https://server/GetSalesOrderInfo.aspx) yürütün.

Ayrıca bkz.

Başvuru

Iç içe for xml sorgular kullanma