资源描述:
《sqlserver操作xml整理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQL操作XML整理=====================================================================SQL操作XML,实现导入功能----读取XML---------declare@xmlvarchar(8000)set@xml=(SELECT*FROMOPENROWSET(BULK'D:peo.xml',SINGLE_CLOB)asx)select@xmlUnicode格式的文件用SINGLE_NCLOB.读取XMLalterPROCEDUREusp_InsertShoppingCartOrder(@xmlnv
2、archar(4000))ASBEGINDECLARE@PointerINTEXECUTEsp_xml_preparedocument@PointerOUTPUT,@xmlINSERTINTOWebSales(ProductID,Price,SaleDate,SaleBatchID,CustomerID)SELECTProductID,Price,SaleDate,SaleBatchID,CustomerIDFROMOPENXML(@Pointer,'/ShoppingCart/Purchase')WITH(ProductIDINT,PriceMONEY,SaleDate
3、SMALLDATETIME,SaleBatchIDINT,CustomerIDINT)EXECsp_xml_removedocument@PointerEND生成XMLselect*fromusersFORXMLRAWselect*fromusersFORXMLautoselect*fromusersFORXMLXPLICITselect*fromusersFORXMLauto,ELEMENTS模式说明RAW行集合的每个记录都转换成叫做行的XML元素。元素将包含一个属性,用来表示所检索的列。AUTO行集合记录可以转换成以FROM子句中的表命名的嵌套XML元素。所
4、检索每一列都将表示为一个属性EXPLICIT为格式化XML提供许多控制。不过,EXPLICIT模式的使用语法要复杂得多。XSLT是一个比较常用的XML转换方法。结合net:语言privatestringGetFORXML(stringsFile,stringsSQL){//Create和opentheconnectiontoNorthwindusing(SqlConnectionoCn=newSqlConnection(this.sCnNW)){oCn.Open();//CreatetheSQLcommandtoexecuteSqlCommandoCmd=newSqlCo
5、mmand(sSQL,oCn);DataSetoDs=newDataSet();//ExecutetheSQLstatementandreturnthedatatoanXmlReader.//ThenreadtheschemaandthefragmentXmlReaderoXml=oCmd.ExecuteXmlReader();oDs.ReadXmlSchema(oXml);oDs.ReadXml(oXml,XmlReadMode.Fragment);oCn.Close();oDs.DataSetName="root";oDs.WriteXml(this.sPath+sF
6、ile);return"WroteXMLtofile"+sFile;}}图片字段转换成BASE64读取:SELECTEmployeeID,FirstName,LastName,PhotoFROMEmployeesWHERELastNameLIKE'D%'FORXMLRAW,BINARYBASE64不支持聚合:可以将聚合后的内容插入表变量中,对表变量处理XMLDECLARE@TempTableTABLE(OrderIDINT,TotalMONEY)处理SELECTOrderID,TotalFROM@TempTableASOrderDetailsFORXMLAUTO使用FOR
7、XML时值得注意的最后一个问题是任何专用的XML字符都将通过使用XML编码来转换。正如HTML可以转换URL中的专用字符一样,适当形式的XML可以编码专用字符。例如,如果<字符包含在数据中,则它将转换成“<”。通过OPENXML插入CustomerCREATEPROCEDUREprInsertCustomerFromXML(@sXMLNTEXT)ASDECLARE@iDocINTEXECsp_xml_preparedocument@iDocOUTPUT,@sXMLINSERTINTOCustomer(CustomerID