我试图将图像插入签名中的BLOB字段,然后我将从表中选择并在报表上呈现 . 我似乎无法想象如何将图像放入表格 . 我做了一个插入,但是当我渲染时,只有图像的路径显示在报告上,而不是图像本身 .
Table
CREATE TABLE esignatures (
office NUMBER(6,0) NOT NULL,
username VARCHAR2(10) NOT NULL,
iblob BLOB NOT NULL
)
INSERT Statement (SQL)
INSERT INTO esignatures
VALUES (100, 'BOB', utl_raw.cast_to_raw('C:\pictures\image1.png'));
我知道我确定以HEX值的形式插入String位置如何在表格中获取图像HEX值,因此当我渲染时我将看到正在显示的图像 .
2 回答
您无法从pl / sql访问本地目录 . 如果使用bfile,则将在运行Oracle的服务器上设置一个目录(create directory),您需要放置图像 .
如果要从本地计算机插入少量图像,则需要客户端应用程序才能执行此操作 . 你可以编写自己的,但我通常使用Toad . 在架构浏览器中,单击表格 . 单击数据选项卡,然后单击符号以添加行 . 双击BLOB列,将打开一个向导 . 最左边的图标会将图像加载到blob中:
SQL Developer具有类似的功能 . 请参阅下面的“加载”链接:
如果你需要通过线路拉图像,你可以使用pl / sql来完成它,但它不是直截了当的 . 首先,您需要设置ACL列表访问(出于安全原因)以允许用户拔出电线 . 有关ACL设置的更多信息,请参见this article .
假设ACL已完成,您可以像这样拉动图像:
希望有所帮助 .
你应该做这样的事情:
1)创建目录对象什么指向服务器端可访问文件夹
2)将您的文件放入OS文件夹目录对象中指向
3)为Oracle架构提供所需的访问权限,将数据从文件加载到表中:
4)使用BFILENAME,EMPTY_BLOB函数和DBMS_LOB包(示例未经过测试 - 小心),如下所示:
在此之后,您可以在BLOB列中获取文件的内容,并可以使用Java将其恢复 .
编辑:丢失一个字母:它应该是LOADFROMFILE .