sql >> Databasteknik >  >> RDS >> Oracle

Oracle PL/SQL HTTP-begäransvarskodningsproblem

Det visade sig att jag var tvungen att använda UTL_HTTP och DBMS_LOB för att Oracle ska kunna analysera tecknen korrekt.

Detta löste mitt 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;
/

Jag hoppas att det här kan hjälpa någon annan.




  1. Oracle raise_application_error felnummer bästa praxis

  2. Tvinga kod-först att alltid initialisera en obefintlig databas?

  3. Hur konstruerar jag en korsdatabasfråga i PHP?

  4. Java - Räkna exakt 60 tecken från en sträng med en blandning av UTF-8 och icke UTF-8 tecken