CLOB
tem um limite de tamanho de 4G
Mas a limitação aqui é com
UTL_HTTP.read_text
que retorna o resultado como um VARCHAR2
(você tem um implícito conversão aqui). Para recuperar objetos de texto grandes da Web com facilidade, você provavelmente precisa de
HttpUriType.getClob
Se por algum motivo você quiser ficar com
UTL_HTTP
, você terá que fazer um loop para ler seu pedaço de dados por pedaço. Algo parecido: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;
Consulte http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vo vários exemplos