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

RTRIMの問題を伴うXMLAGG

    .getClobVal()を追加する必要があります RTRIMの前のXMLType結果に。

    XMLAGGは、大量のデータで正常に機能します。また、TRIMはCLOBで正常に機能します。ただし、これらを組み合わせると、OracleはXMLTypeをCLOBではなくVARCHAR2に変換しようとします。

    例:

    create or replace function test_function return clob is
        v_clob clob;
    begin
        v_clob := v_clob || lpad('a', 4000, 'a');
        v_clob := v_clob || lpad('b', 4000, 'b');
        return v_clob;
    end;
    /
    
    --Works fine, returns an XMLType
    select xmlagg(xmlelement("asdf", test_function)) from dual;
    
    --Works fine, returns a CLOB
    select trim(test_function) from dual;
    
    --ORA-19011: Character string buffer too small
    select trim(xmlagg(xmlelement("asdf", test_function))) from dual;
    
    --Works
    select trim(xmlagg(xmlelement("asdf", test_function)).getClobVal()) from dual;
    


    1. MariaDBでのUUID_SHORT()のしくみ

    2. T-SQLを使用してSQLServerエージェントXPを有効にする方法

    3. ClusterControl1.8.2でPostgreSQL用のPgBouncer接続プールを使用する

    4. SQL Server Express LocalDBをリモートで接続できますか?