CLOB
có giới hạn kích thước là 4G
Nhưng hạn chế ở đây là với UTL_HTTP.read_text
trả về kết quả dưới dạng VARCHAR2
(bạn có một ẩn ý chuyển đổi tại đây).
Để dễ dàng truy xuất các đối tượng văn bản lớn từ web, bạn có thể cần HttpUriType.getClob
Nếu vì lý do nào đó bạn muốn gắn bó với UTL_HTTP
, bạn sẽ phải lặp lại để đọc dữ liệu của mình theo từng đoạn. Đại loại vậy:
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;
Xem http:// oracle-base.com/articles/misc/retrieving-html-and-binaries-into-tables-over-http.php vor các ví dụ khác nhau