sql >> Database >  >> RDS >> Oracle

Hoe kan ik een CSV-tekenreeks retourneren van het PL/SQL-tabeltype in Oracle?

Zonder in te gaan op de vraag waarom je een tabeltype gebruikt en geen tabel (of tijdelijke tabel), kun je het als volgt doen:

declare
  my_table varTableType;
  i varchar2(32767);
begin
  my_table := new
              varTableType('bbbb', 'ccca', 'ddda', 'eee', 'fffa', 'gggg');

  select trim(xmlagg(xmlelement(e, column_value || ','))
              .extract('//text()'))
    into i
    from table(my_table)
   where column_value like '%a';

  dbms_output.put_line(i);

end;

Er zijn meer manieren om rijen samen te voegen- WM_CONCAT (indien ingeschakeld) of LISTAGG (sinds 11g R2) maar het basisidee van

select column_value 
from table(my_table) 
where column_value like '%a';

blijft

Er is een andere manier zonder sql:

declare
  my_table varTableType;
  i varchar2(32767);
begin
  my_table := new
              varTableType('bbbb', 'ccca', 'ddda', 'eee', 'fffa', 'gggg');

  FOR j IN my_table.first .. my_table.last LOOP

     IF my_table(j) like '%a' THEN
        i := i || my_table(j);
     END IF;

  END LOOP;

  dbms_output.put_line(i);

end;


  1. Waarom kan mijn C-programma in git bash draaien, maar niet in cmd?

  2. Postgresl select count(*) tijdrovend

  3. unieke slugs voor paginatitels maken php

  4. de kolomnamen van de Oracle-tabel weergeven