Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để trả về một chuỗi CSV từ kiểu bảng PL / SQL trong Oracle

Nếu không đi vào câu hỏi- tại sao bạn lại sử dụng một loại bảng mà không phải một bảng (hoặc bảng tạm thời), bạn có thể làm như sau:

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;

Có nhiều cách khác để nối các hàng- WM_CONCAT (nếu được bật) hoặc LISTAGG (kể từ 11g R2) nhưng ý tưởng cơ bản của

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

ở lại

Có một cách khác mà không cần 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. C # Kết nối với định dạng DateTime của Oracle DB

  2. Không gian bảng trong Oracle

  3. Làm cách nào để lưu trữ các byte trong Oracle Varchar2 và có ASCII được coi là văn bản

  4. Số hoặc kiểu đối số sai trong lệnh gọi thủ tục có sử dụng zxJDBC

  5. Một thủ tục SQL có thể trả về một bảng không?