资源描述:
《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.读取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读取:SEL
7、ECTEmployeeID,FirstName,LastName,PhotoFROMEmployeesWHERELastNameLIKE'D%'FORXMLRAW,BINARYBASE64不支持聚合:可以将聚合后的内容插入表变量中,对表变量处理XMLDECLARE@TempTableTABLE(OrderIDINT,TotalMONEY)处理SELECTOrderID,TotalFROM@TempTableASOrderDetailsFORXMLAUTO使用FORXML时值得注意的最后一个问题是
8、任何专用的XML字符都将通过使用XML编码来转换。正如HTML可以转换URL中的专用字符一样,适当形式的XML可以编码专用字符。例如,如果<字符包含在数据中,则它将转换成“<”。通过OPENXML插入CustomerCREATEPROCEDUREprInsertCustomerFromXML(@sXMLNTEXT)ASDECLARE@iDocINTEXECsp_xml_preparedocument@iDocOUTPUT,@sXMLINSERTINTOCustomer(CustomerID