Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да върна CSV низ от PL/SQL тип таблица в Oracle

Без да навлизате във въпроса – защо използвате тип таблица, а не таблица (или временна таблица), можете да го направите по следния начин:

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;

Има повече начини за свързване на редове - WM_CONCAT (ако е активирано) или LISTAGG (от 11g R2), но основната идея на

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

остава

Има друг начин без 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle подреждане на резултатите с помощта на смесена колона varchar, но числова клауза where

  2. Hibernate Dialect за Oracle 19

  3. Как да хванете грешка във forall plsql

  4. Наскоро присъствах на едно интервю. Не мога да отговоря на този, можете ли да ми помогнете

  5. Командата не е намерена - bash:sqlplus: