gpt4 book ai didi

sql - 将图像插入 BLOB Oracle 10g

转载 作者:行者123 更新时间:2023-12-01 18:05:45 25 4
gpt4 key购买 nike

我正在尝试将图像插入签名中的 BLOB 字段,然后我将从表中选择该图像并在报告上呈现。我似乎不知道如何将图像放入表格中。然而,当我渲染时,我做了一个插入,报告上只显示了图像的路径,而不是图像本身。

表格

CREATE TABLE esignatures (
office NUMBER(6,0) NOT NULL,
username VARCHAR2(10) NOT NULL,
iblob BLOB NOT NULL
)

INSERT 语句 (SQL)

INSERT INTO esignatures  
VALUES (100, 'BOB', utl_raw.cast_to_raw('C:\pictures\image1.png'));

我确信我正在以十六进制值的形式插入字符串位置,如何获取表中的图像十六进制值,以便在渲染时我会看到正在显示的图像。

最佳答案

您无法从 pl/sql 访问本地目录。如果您使用 bfile,您将在运行 Oracle 的服务器上设置一个目录 ( create directory ),您需要在其中放置镜像。

如果您想从本地计算机插入少量图像,则需要一个客户端应用程序来执行此操作。您可以自己编写,但我通常使用 Toad 来实现此目的。在架构浏览器中,单击表。单击数据选项卡,然后点击 + 号添加一行。双击 BLOB 列,将打开一个向导。最左边的图标会将图像加载到 blob 中:

enter image description here

SQL Developer 有类似的功能。请参阅下面的“加载”链接:

enter image description here

如果您需要通过网络提取图像,您可以使用 pl/sql 来完成,但这并不简单。首先,您需要设置 ACL 列表访问(出于安全原因)以允许用户拉线。请参阅this article有关 ACL 设置的更多信息。

假设 ACL 已完成,您将像这样提取镜像:

declare
l_url varchar2(4000) := 'http://www.oracleimg.com/us/assets/12_c_navbnr.jpg';
l_http_request UTL_HTTP.req;
l_http_response UTL_HTTP.resp;
l_raw RAW(2000);
l_blob BLOB;
begin
-- Important: setup ACL access list first!

DBMS_LOB.createtemporary(l_blob, FALSE);

l_http_request := UTL_HTTP.begin_request(l_url);
l_http_response := UTL_HTTP.get_response(l_http_request);

-- Copy the response into the BLOB.
BEGIN
LOOP
UTL_HTTP.read_raw(l_http_response, l_raw, 2000);
DBMS_LOB.writeappend (l_blob, UTL_RAW.length(l_raw), l_raw);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body THEN
UTL_HTTP.end_response(l_http_response);
END;

insert into my_pics (pic_id, pic) values (102, l_blob);
commit;

DBMS_LOB.freetemporary(l_blob);
end;

希望有帮助。

关于sql - 将图像插入 BLOB Oracle 10g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com