Oracle查询结果生成XML
在sqlserver   中 
 可以把查询的表结构以xml输出,但oracle怎么写啊 
 sqlserver: 
 select   ID,Name   from   A   for   xml   raw 
 Oracle: 
 ??? 
 select   ID,Name   from   A   where   User= 'cccc '   for   xml   raw 
 该如何写啊 
------解决方案--------------------导入: 
 /***************************************************************************** 
 过程名称:add_to_stockmarket 
 参数1:fileName in varchar2 接收用户输入的xml文件名 
 功能:将xml文件中的数据导入到Stockmarket数据表中 
 *****************************************************************************/ 
 create or replace procedure add_to_stockmarket(fileName IN varchar2) as 
 document xmldom.DOMDocument;--声明文档对象模型 
 subelement xmldom.DOMElement;--声明元素类型 
 nodelistStock xmldom.DOMNodeList; 
 nodelistStockChild xmldom.DOMNodeList; 
 stock_code char(6);--stock字段 
 stock_name varchar2(30);--stockname字段 
 stock_shortname varchar(30);--stockshortname字段 
 stock_buydate date;--stockbuydate字段 
 recordCountOuter number;--存储xml文档中stock元素的个数 
 quantity exception; 
 begin   
 document:=xmlparser.parse(fileName);--解析xml文档 
 subelement:=xmldom.getDocumentElement(document);--获得根元素 
 nodelistStock:=xmldom.getElementsByTagName(subelement, 'Stock '); 
 recordCountOuter:=xmldom.getLength(nodelistStock); 
 for outerCycle in 0..recordCountOuter-1 loop--循环记录信息 
 nodelistStockChild:=xmldom.getChildNodes(xmldom.item(nodelistStock,outerCycle)); 
 if xmldom.getLength(nodelistStockChild) <> 4 then 
 raise quantity; 
 end if; 
 stock_code:=xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nodelistStockChild,0))); 
 stock_name:=xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nodelistStockChild,1))); 
 stock_shortname:=xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nodelistStockChild,2))); 
 stock_buydate:=to_date(xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nodelistStockChild,3))), 'yyyy-fmMM-fmDD HH24:MI:SS '); 
 insert into stockmarket values(stock_code,stock_name,stock_shortname,stock_buydate); 
 end loop; 
 commit; 
 exception 
 when quantity then 
 raise_application_error(-20010, '请核对该xml文档与数据库表Stockmarket的结构是否一致, ' 
 ||chr(10)|| '若仍不能解决问题,请与系统管理员联系! '); 
 end;   
 导出: 
 /************************************************************************************************************ 
 存储过程名称:up_exptoxml 
 参数1:XMLfilepath in varchar2 接收将要生成的文件名(可带路径) 
 参数2:sqlQuery in varchar2 接收用户输入的查询字符串,默认值为: "select * from stockmarket " 
 参数3:flag in varchar2 标志位,说明第二个参数的来源(即由用户输入还是来自于文件)默认值: 
  "sql ",即由用户输入 
 使用方法: 
 1、默认方式:exec up_exptoxml(xmlfilepath) //将stockmarket表中的数据全部取出 
 保存到参数xmlfilepath指定的文件中 
 2、用户指定查询语句方式: 
 //将用户指定的查询语句所生成的结果集保存到参数xmlfilepath所指定的文件中 
 1)exec up_exptoxml(xmlfilepath, 'select stockname,buydate from stockmarket ')   
 //如果用户认为查询语句过长,直接输入不方便,也可以将语句保存成*.txt文件, 
 //存储过程执行方式如下: 
 2)exec up_exptoxml(xmlfilepath, 'filepath,filename ', 'file '); 
 该方式下存储过程将指定目录,指定文件中的sql语句读出并执行,将所生成的结果集保存到参数xmlfilepath 
 所指定的文件中 
 功能:按照用户要求将查询结果保存为xml文件 
 ************************************************************************************************************/ 
 create or replace procedure up_exptoxml(XMLfilepath in varchar2, sqlQuery varchar2:= 'select * from stockmarket ',flag varchar2:= 'sql ') is 
 sqlstr_from_file clob;--保存sql查询字符串 
 document xmldom.DOMDocument;--文档对象 
 rootelement xmldom.DOMElement;--根元素 
 stockRecord xmldom.DOMElement;--记录 
 stockfield xmldom.DOMElement;--字段 
 l_cursor integer;--存储游标变量返回值 
 l_col_cot i