在Apex 19.2中,可以使用以下代码示例从外部URL下载文件到blob列:
DECLARE
l_url VARCHAR2(2000) := 'https://example.com/file.txt'; -- 外部URL
l_blob BLOB;
l_http Utl_Http.Http_Request;
l_resp Utl_Http.Http_Response;
l_buffer VARCHAR2(32767);
l_amount NUMBER;
l_pos NUMBER := 1;
BEGIN
-- 创建HTTP请求
l_http := Utl_Http.Begin_Request(l_url);
-- 发送HTTP请求并获取响应
l_resp := Utl_Http.Get_Response(l_http);
-- 创建BLOB对象
Dbms_Lob.CreateTemporary(l_blob, TRUE);
-- 循环读取响应并写入BLOB
LOOP
Utl_Http.Read_Text(l_resp, l_buffer, 32767);
l_amount := Length(l_buffer);
Dbms_Lob.Write(l_blob, l_amount, l_pos, l_buffer);
l_pos := l_pos + l_amount;
EXIT WHEN l_amount < 32767;
END LOOP;
-- 在数据库中保存BLOB
INSERT INTO your_table (file_blob) VALUES (l_blob);
-- 提交事务
COMMIT;
EXCEPTION
WHEN OTHERS THEN
-- 处理异常
Dbms_Output.Put_Line('An error occurred: ' || Sqlerrm);
END;
请将代码中的https://example.com/file.txt
替换为你要下载的文件的URL,并将your_table
替换为你要保存blob的表名。此代码会将从外部URL下载的文件保存到blob列中。
注意:在使用此代码之前,请确保数据库服务器能够访问所提供的外部URL,并且数据库用户具有执行网络请求的权限。