oracle dbms_xml

DECLARE
         Ctx    DBMS_XMLGEN.ctxHandle;   -- Var's to convert SQL output to XML
         xml    clob;
         emp_no NUMBER := 7369;

         xmlc   varchar2(4000);          -- Var's required to convert lob to varchar
         off    integer := 1;
         len    integer := 4000;
 BEGIN
         Ctx := DBMS_XMLGEN.newContext('SELECT * FROM emp WHERE empno = '||emp_no);
         DBMS_XMLGen.setRowsetTag(Ctx, 'EMP_TABLE');
         DBMS_XMLGen.setRowTag(Ctx, 'EMP_ROW');
         --Dbms_Xmlgen.closeContext(Ctx);
         xml := DBMS_XMLGEN.getXML(Ctx);
         DBMS_LOB.READ(xml, len, off, xmlc);   -- Display first part on screen
         DBMS_OUTPUT.PUT_LINE(xmlc);
 END;
 
  select * FROM EMP
 
 
  create table XMLTable (doc_id number, xml_data XMLType);

 insert into XMLTable values (1,
         XMLType('<FAQ-LIST>
            <QUESTION>
                 <QUERY>Question 1</QUERY>
                 <RESPONSE>Answer goes here.</RESPONSE>
            </QUESTION>
         </FAQ-LIST>'));

 select extractValue(xml_data, '/FAQ-LIST/QUESTION/RESPONSE')  -- XPath expression
 from   XMLTable
 where  existsNode(xml_data, '/FAQ-LIST/QUESTION[QUERY="Question 1"]') = 1;
 
 
  CREATE type address_t AS OBJECT
(
   street VARCHAR2(20),
   state VARCHAR2(20),
   city VARCHAR2(20),
   zip   VARCHAR2(20)
);
CREATE TABLE employee
(
  empno NUMBER,
  ename VARCHAR2(200),
  address address_t
);
insert into employee values (100,'John',
      address_t('100, Main Street','Jacksonville','FL','32607'));
insert into employee values (200,'Jack',
      address_t('200 Front Road','San Francisco','CA','94011'));
     
declare
  ctx dbms_xmlgen.ctxhandle;
  xmlc   varchar2(4000);
  len    integer := 4000;
  result clob;
begin
  dbms_output.enable(500000);
   -- create a new context with the SQL query
   ctx := dbms_xmlgen.newContext('select * from employee');

   -- generate the CLOB as a result.
   result := dbms_xmlgen.getXML(ctx);

  -- print out the result of the CLOB
     -- Display first part on screen
 
    printClobOut(result); -- see the lob manual for examples on printing..
  -- close the context
  dbms_xmlgen.closeContext(ctx);
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值