CLOB
har en størrelsesgrænse på 4G
Men begrænsningen her er med UTL_HTTP. read_text
der returnerer resultatet som en VARCHAR2
(du har en implicit konvertering her).
For nemt at hente store tekstobjekter fra nettet har du sandsynligvis brug for HttpUriType.getClob
Hvis du af en eller anden grund vil holde dig til UTL_HTTP
, bliver du nødt til at sløjfe for at læse dine data stykke for stykke. Sådan noget:
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 forskellige eksempler