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

Oracle PL /SQLHTTP要求応答のエンコーディングの問題

    UTL_HTTPを使用する必要があったことがわかりました およびDBMS_LOB Oracleが文字を正しく解析するために。

    これで私の問題は解決しました:

    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;
    /
    

    これが他の誰かに役立つことを願っています。




    1. MicrosoftAzureツールを使用してビッグデータを分析する

    2. MySQLデータベースにBLOB値を挿入します

    3. SQLServerで日付を別のタイムゾーンに変換する

    4. 削除操作は、innodbのテーブル全体をロックします