資源描述:
《在sql server中如何與xml交互--》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、在SQLServer中如何與XML交互>> XML可以說是數(shù)據(jù)庫表現(xiàn)的一種靈活的形式,在數(shù)據(jù)庫開發(fā)過程中,很多時(shí)候我們都會需要涉及到XML,特別是用在數(shù)據(jù)交換。而在SQLServer2005中,XML已成為一種流行的數(shù)據(jù)類型,XML已經(jīng)做為一種新型的類型存儲在數(shù)據(jù)庫中。借助于基于XML模式的強(qiáng)類型化支持和基于服務(wù)器端的XML數(shù)據(jù)校驗(yàn)功能,開發(fā)者就可以對存儲的XML文檔進(jìn)行輕松地遠(yuǎn)程修改。 在SQLServer2000中就已經(jīng)包括了一些XML特征。最常用的是使用FORXML語句以XML形式返回結(jié)果。SQLServer2005的功能則明
2、顯不同。在SQLServer2005中,XML是一種真正的數(shù)據(jù)類型;這意味著,可以使用XML作為表和視圖中的列,XML可以用于T-SQL語句中或作為存儲過程的參數(shù)。可以直接在數(shù)據(jù)庫中存儲、查詢和管理XML文件?! ≡赟QLServer中,主要有以下幾種操作XML的方式: 1)FORXML語句的使用 FORXML語句在使用的時(shí)候有三種模式,參數(shù)分別為:RAL元素。默認(rèn)情況下,行集中非NULL的每列值都將映射為元素的一個(gè)屬性。如果將ELEMENTS指令添加到FORXML子句,則每個(gè)列值都將映射到元素的子元素?! ∠葋砜碦Ae][varc
3、har](20)NULL, [user_Pe,User_pe=adminUser_pin888/> <roe=userUser_pe,User_pe>admin</User_Name> <User_pin888</User_pe>user</User_Name> <User_pe,User_pe=adminUser_pin888/> <Tb_UserID=2User_Name=userUser_pe,User_pe>admin</User
4、_Name> <User_pin888</User_pe>user</User_Name> <User_pL文檔的形式。必須以特定的方式編寫查詢,將有關(guān)123下一頁>>>>這篇文章來自..,。預(yù)期嵌套的附加信息顯式指定為查詢的一部分。當(dāng)指定EXPLICIT模式時(shí),必須負(fù)責(zé)確保生成的XML符合語法規(guī)則并且有效?! XPLICIT模式會將由查詢執(zhí)行生成的行集轉(zhuǎn)換為XML文檔。為使EXPLICIT模式生成XML文檔,行集必須具有特定的格式。這需要編寫SELECT查詢以生成具有特定格式的行集(通用
5、表),以便處理邏輯隨后可以生成所需的XML?! ∈紫?,查詢必須生成下列兩個(gè)元數(shù)據(jù)列: 第一列必須提供當(dāng)前元素的標(biāo)記號(整數(shù)類型),并且列名必須是Tag。查詢必須為從行集構(gòu)造的每個(gè)元素提供唯一標(biāo)記號?! 〉诙斜仨毺峁└冈氐臉?biāo)記號,并且此列的列名必須是Parent。這樣,Tag和Parent列將提供層次結(jié)構(gòu)信息?! ∏皟闪惺荰ag和Parent,它們是元數(shù)據(jù)列。這些值確定層次結(jié)構(gòu)。查詢必須以特定的方式提供列名,Parent列中的0或NULL表明相應(yīng)的元素沒有父級?! ≡跇?gòu)造XML的過程中,處理邏輯為每行選擇一組列,然后構(gòu)造一個(gè)元素?!?/p>
6、 現(xiàn)在來看看下面的兩個(gè)語句: 語句一: SELECT1asTag, NULLasParent, User_Nameas[TbUser!1!UserName], User_pe=admin/> <TbUserUserName=user/> 語句二: SELECT2asTag, NULLasParent, User_Nameas[TbUser!1!UserName], User_pin888/> <TbUserUserPe和TbUser!2!UserPaDeclaration
7、Table
8、Name)] I:XML文檔的內(nèi)部表式形式的文檔句柄。 RolDocumentnvarchar(1000) SETXmlDocument=N'<ROOT> <CustomerCustomerID=VIContactName=PaulHenriot> <OrderOrderID=10248CustomerID=VIEmployeeID=5 OrderDate=1996-07-04T00:00:00> <OrderDetailProductID=11Quantity=12/&g
9、t; <OrderDetailProductID=42Quantity=10/> </Order> </Customer> <CustomerCustome