資源描述:
《sqlserver操作xml整理》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、SQL操作XML整理=====================================================================SQL操作XML,實現(xiàn)導入功能----讀取XML---------declare@xmlvarchar(8000)set@xml=(SELECT*FROMOPENROWSET(BULK'D:peo.xml',SINGLE_CLOB)asx)select@xmlUnicode格式的文件用SINGLE_NCLOB.讀取XMLalterPROC
2、EDUREusp_InsertShoppingCartOrder(@xmlnvarchar(4000))ASBEGINDECLARE@PointerINTEXECUTEsp_xml_preparedocument@PointerOUTPUT,@xmlINSERTINTOWebSales(ProductID,Price,SaleDate,SaleBatchID,CustomerID)SELECTProductID,Price,SaleDate,SaleBatchID,CustomerIDFROMO
3、PENXML(@Pointer,'/ShoppingCart/Purchase')WITH(ProductIDINT,PriceMONEY,SaleDateSMALLDATETIME,SaleBatchIDINT,CustomerIDINT)EXECsp_xml_removedocument@PointerEND生成XMLselect*fromusersFORXMLRAWselect*fromusersFORXMLautoselect*fromusersFORXMLXPLICITselect*f
4、romusersFORXMLauto,ELEMENTS模式說明RAW行集合的每個記錄都轉換成叫做行的XML元素。元素將包含一個屬性,用來表示所檢索的列。AUTO行集合記錄可以轉換成以FROM子句中的表命名的嵌套XML元素。所檢索每一列都將表示為一個屬性EXPLICIT為格式化XML提供許多控制。不過,EXPLICIT模式的使用語法要復雜得多。XSLT是一個比較常用的XML轉換方法。結合net:語言privatestringGetFORXML(stringsFile,stringsSQL
5、){//Create和opentheconnectiontoNorthwindusing(SqlConnectionoCn=newSqlConnection(this.sCnNW)){oCn.Open();//CreatetheSQLcommandtoexecuteSqlCommandoCmd=newSqlCommand(sSQL,oCn);DataSetoDs=newDataSet();//ExecutetheSQLstatementandreturnthedatatoanXmlReader.
6、//ThenreadtheschemaandthefragmentXmlReaderoXml=oCmd.ExecuteXmlReader();oDs.ReadXmlSchema(oXml);oDs.ReadXml(oXml,XmlReadMode.Fragment);oCn.Close();oDs.DataSetName="root";oDs.WriteXml(this.sPath+sFile);return"WroteXMLtofile"+sFile;}}圖片字段轉換成BASE64讀?。篠EL
7、ECTEmployeeID,FirstName,LastName,PhotoFROMEmployeesWHERELastNameLIKE'D%'FORXMLRAW,BINARYBASE64不支持聚合:可以將聚合后的內容插入表變量中,對表變量處理XMLDECLARE@TempTableTABLE(OrderIDINT,TotalMONEY)處理SELECTOrderID,TotalFROM@TempTableASOrderDetailsFORXMLAUTO使用FORXML時值得注意的最后一個問題是
8、任何專用的XML字符都將通過使用XML編碼來轉換。正如HTML可以轉換URL中的專用字符一樣,適當形式的XML可以編碼專用字符。例如,如果<字符包含在數(shù)據(jù)中,則它將轉換成“<”。通過OPENXML插入CustomerCREATEPROCEDUREprInsertCustomerFromXML(@sXMLNTEXT)ASDECLARE@iDocINTEXECsp_xml_preparedocument@iDocOUTPUT,@sXMLINSERTINTOCustomer(CustomerID