Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Problem z kodowaniem odpowiedzi na żądanie Oracle PL/SQL HTTP

Okazuje się, że musiałem użyć UTL_HTTP i DBMS_LOB aby Oracle poprawnie przeanalizował znaki.

To rozwiązało mój problem:

DECLARE
    l_clob            CLOB;
    l_http_request    utl_http.req;
    l_http_response   utl_http.resp;
    l_text            VARCHAR2(32767);
BEGIN
    dbms_lob.createtemporary(l_clob, false);
    l_http_request := utl_http.begin_request(my_url || '/download_csv');
    l_http_response := utl_http.get_response(l_http_request);
    BEGIN
        LOOP
            utl_http.read_text(l_http_response, l_text, 32766);
            dbms_lob.writeappend(l_clob, length(l_text), l_text);
        END LOOP;
    EXCEPTION
        WHEN utl_http.end_of_body THEN
            utl_http.end_response(l_http_response);
    END;

    dbms_output.put_line(l_clob); /* => ENCODING IS FINALLY GOOD ! */
    dbms_lob.freetemporary(l_blob);
EXCEPTION
    WHEN OTHERS THEN
        utl_http.end_response(l_http_response);
        dbms_lob.freetemporary(l_blob);
        RAISE;
END;
/

Mam nadzieję, że to może pomóc komuś innemu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj za pomocą samodzielnego łączenia

  2. Problemy z używaniem/wyświetlaniem znaków specjalnych z bazy danych Oracle w aplikacji .Net

  3. Zapytanie SQL działa w PL/SQL, ale nie w Visual Studio

  4. Jak korzystać z funkcji Oracle LITAGG

  5. Tworzenie zadania DBMS_SCHEDULER dla Oracle