SQL Server-SQL Server和XML的整合

來源:互聯網
上載者:User
XML可謂最新的資料存放區解決方案了。XML相比HTML給予了Web開發人員更大的編程靈活性。這種新技術驅動開發機構嘗試把XML同自己的產品整合起來。微軟就是採取如此舉措的先驅者。微軟公司在開發Internet產品的時候一度慢慢騰騰,現在可就不同了。最近一位微軟公司的進階職員就這樣說:“你要給我們一刀,傷口裡出來的儘是XML。”也許形容得有點過分,但事實確實是這樣的:微軟的幾乎所有產品中都能看到XML的身影。舉個例子:微軟是如何在其SQL Server產品線中整合XML的呢?下面咱們就來看看關鍵的FOR XML子句。
  
  以XML的名義擷取資訊
    
  SQL Server和XML之間的整合首要一點就是根據SQL資料建立XML檔案。XML檔案的構造並不複雜,用簡單的指令碼和ADO記錄集就可以輕鬆產生。這個任務雖然不算麻煩,但開發人員卻需要針對他們從伺服器擷取的結果集合產生不同的指令碼,或者編寫更為複雜的泛型指令碼。SELECT 語句則由此而配備了新的FOR XML子句。
  
  該子句的文法如下所示:
  [ FOR { XML { RAW  AUTO  EXPLICIT }
  [ , XMLDATA ]
  [ , ELEMENTS ]
  [ , BINARY  BASE64 ] } ]
  
  FOR XML子句的XML模式由三種參數值表示:RAW、AUTO或者EXPLICIT。模式決定了結果XML的形式和組成。下面我們就更深入些地通過以下樣本瞭解以上各個XML選項。
  
  RAW樣本
  我們執行以下的SQL語句:
  SET ROWCOUNT 3
  SELECT Orders.OrderID, Orders. OrderDate, ProductID
  FROM Orders, [Order Details]
  WHERE Orders.OrderID =  [Order Details].OrderID
  ORDER BY Orders.OrderID
  FOR XML RAW
  
  執行後產生的結果如下:
  <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="11"/>
  <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="42"/>
  <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="72"/>
  
  AUTO樣本
  我們執行以下的SQL語句:
  ‘結果限制為3條記錄。
  SET ROWCOUNT 3
  SELECT Orders.OrderID, Orders. OrderDate, ProductID
  FROM Orders, [Order Details]
  WHERE Orders.OrderID =  [Order Details].OrderID
  ORDER BY Orders.OrderID
  FOR XML AUTO
  
  產生的結果如下所示:
  <Orders OrderID="10248"  OrderDate="1996-07-04T00:00:00">
  <Order_x0020_Details ProductID="11"/>
  <Order_x0020_Details ProductID="42"/>
  <Order_x0020_Details ProductID="72"/>
  </Orders>
  
  EXPLICIT樣本
  Explicit模式給予查詢編程人員對產生XML的完全控制能力。然而這種控制力度卻要價不菲:你得編寫每一查詢以便SQL語句能包含XML資訊。
  
  有關的文法很複雜,而且超出了本文的討論範圍。 [ , XMLDATA ] [ ,  ELEMENTS ] [ , BINARY  BASE64 ] 是相應的選擇性參數。
  
  可選元素
  
    
  樣本可以讓我們對各種設定的內部工作機理有更多的瞭解,下面我們就進一步研究下FOR XML語句的可選元素XMLDATA。
  
  如果你設定該選項,那麼XML-Data schema就會包含在結果集合裡。以下是SQL語句: 
  SET ROWCOUNT 3
  SELECT Orders.OrderID, Orders. OrderDate, ProductID
  FROM Orders, [Order Details]
  WHERE Orders.OrderID =  [Order Details].OrderID
  ORDER BY Orders.OrderID
  FOR XML AUTO, XMLDATA
  
  以上的SQL語句產生以下結果:
  <Schema name="Schema2" xmlns=" urn:schemas-microsoft-com:xml-data" xmlns:dt=" urn:schemas-microsoft-com:datatypes">
  <ElementType name="Orders" content=" eltOnly" model="closed" order="many"> <element type="Order_x0020_Details"  maxOccurs="*"/>…
  
  ELEMENTS
  ELEMENTS選項指示各資料列作為子項目而非屬性返回。假如你採用AUTO模式就可以只採用該選項。
  
  BINARY BASE64
  使用該選項表示你希望採用base64編碼格式表示位元據。
  
  採用XML子句的說法可就多了,你最好參考下SQL線上圖書。
  
  線上指南
  SQL Server線上圖書 對FOR XML子句的用法進行了闡述。而且還提到了在使用這一子句時要注意的多項限制。比方說,FOR XML字句不能同視圖定義或者COMPUTE BY子句合用。你不妨參考有關文檔瞭解更多細節。
  
  本文只是對FOR XML子句的簡單說明,這裡要提醒你的是這一部分不過是XML同SQL Server整合需要注意的一點,其他方面的問題還包括IIS的OPENXML 函數和模版檔案等。看來真是這樣,SQL Server的每個毛孔都滴著XML這種東西。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.