ただし、ここでの制限は、UTL_HTTP.read_text
結果をVARCHAR2
として返します (暗黙的 ここで変換)。
Webから大きなテキストオブジェクトを簡単に取得するには、おそらく HttpUriType.getClob
何らかの理由でUTL_HTTP
を使い続けたい場合 、データをチャンクごとに読み取るには、ループする必要があります。そのようなもの:
BEGIN
...
l_clob CLOB;
l_text VARCHAR2(32767);
BEGIN
DBMS_LOB.createtemporary(l_clob, FALSE);
...
l_http_request := UTL_HTTP.begin_request(your_URI);
l_http_response := UTL_HTTP.get_response(l_http_request);
-- Loop to read data chunk by chunk up to the end
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;
http://を参照してください。 oracle-base.com/articles/misc/retrieveing-html-and-binaries-into-tables-over-http.php さまざまな例をご覧ください