CLOB
avoir une limite de taille de 4G
Mais la limitation ici est avec UTL_HTTP.read_text
qui renvoie le résultat sous la forme d'un VARCHAR2
(vous avez un implicite conversion ici).
Pour récupérer facilement des objets texte volumineux sur le Web, vous avez probablement besoin de HttpUriType.getClob
Si pour une raison quelconque vous souhaitez vous en tenir à UTL_HTTP
, vous devrez boucler pour lire vos données morceau par morceau. Quelque chose comme ça :
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;
Voir http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vor divers exemples