CLOB
har en storleksgräns på 4G
Men begränsningen här är med UTL_HTTP. read_text
som returnerar resultatet som en VARCHAR2
(du har en implicit konvertering här).
För att enkelt kunna hämta stora textobjekt från webben behöver du förmodligen HttpUriType.getClob
Om du av någon anledning vill hålla fast vid UTL_HTTP
, måste du loopa för att läsa din data bit för bit. Något sådant:
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;
Se http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php olika exempel