sql >> データベース >  >> RDS >> Oracle

OracleのPL/SQLテーブルタイプからCSV文字列を返すにはどうすればよいですか。

    質問に入る必要はありません-なぜテーブル(または一時テーブル)ではなくテーブルタイプを使用しているのか、次のように行うことができます:

    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. アラビア文字??????? phpとmysqlで

    2. クエリビルダーからのlaravelの雄弁な関係

    3. Laravel4のページネーションは1ページで機能します。しかし、別の人のために働いていません

    4. ビューから表を作成-OracleSQLSQLエラー:ORA-01723:長さゼロの列は許可されていません