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