sql >> Databáze >  >> RDS >> Oracle

Oracle:Vybrat odlišné nefunguje, když je kurzor uvnitř kurzoru (pomocí kurzorového výrazu)

Myslím, že potřebujete odlišný výstup jako níže

<?xml version="1.0"?>
<ROWSET>
 <ROW>
  <CONTACTS>
   <CONTACTS_ROW>
    <CONTACT_NAME>ALBERT EINSTEIN</CONTACT_NAME>
    <INVOICE_NUMBER>123456</INVOICE_NUMBER>
    <INVOICE_AMOUNT>10000</INVOICE_AMOUNT>
    <INVOICE_CURRENCY>EUR</INVOICE_CURRENCY>
   </CONTACTS_ROW>
  </CONTACTS>
 </ROW>
</ROWSET>

k tomu není potřeba žádný druhý kurzor. můžete dosáhnout jako níže

select dbms_xmlgen.getxml('
select 
cursor (
  select 
    distinct 
    ''ALBERT EINSTEIN'' CONTACT_NAME 
    , 123456 INVOICE_NUMBER, 10000 INVOICE_AMOUNT, ''EUR'' INVOICE_CURRENCY 
  from 
  ALL_VIEWS
  where view_name IN ( ''ALL_INDEXES'', ''ALL_TABLES'')
  ) AS CONTACTS
  from dual 
 ') from dual
;

od distint je při této příležitosti jiný. proto není vyžadován žádný podkurzor. zde distinct odstraní všechny záznamy v poddotazu sám.



  1. Jak nahradit hodnoty sqlldr

  2. Aliasing názvů polí v modelu SQLAlchemy nebo podkladové tabulce SQL

  3. nástroje pro testování zátěže mysql

  4. MySQL - dotazování na průměrnou délku řádku