CLOB
avere un limite di dimensione di 4G
Ma la limitazione qui è con UTL_HTTP.read_text
che restituisce il risultato come VARCHAR2
(hai un implicito conversione qui).
Per recuperare facilmente oggetti di testo di grandi dimensioni dal Web, probabilmente hai bisogno di HttpUriType.getClob
Se per qualche motivo vuoi restare con UTL_HTTP
, dovrai eseguire un ciclo per leggere i tuoi dati pezzo per pezzo. Qualcosa del genere:
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;
Vedi http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vor vari esempi