我目前正在使用Oracle Apex 5.1.2 .
我在数据库中创建了一个表,其中包含一个可以保存BLOB数据类型的列,一个用于filename的列和一个用于MIME类型的列 .
在我的APEX应用程序中,我有一个文件浏览页面项 . 此页面项的目的是允许最终用户将文件附加到页面 . 这部分工作完美 - 用户可以使用该项目浏览文件并将其附加到页面,然后下载文件以便查看 .
问题:我希望最终用户能够在需要时删除附件,如果他们愿意,可以在其位置附加另一个文件 . 我的想法是创建一个按钮,在按钮的设置中将Action设置为“Submit Page”,将Database Action设置为SQL Update Action . 然后,我将创建一个PL / SQL代码类型的页面进程,并在按下我创建的按钮时,在进程设置中设置服务器端条件 . 在该过程的PL / SQL代码部分,从我所做的研究中可以看出,我有以下两种选择之一:
UPDATE table_name
SET blob_column = EMPTY_BLOB()
WHERE my_id = id
要么:
UPDATE table_name
SET blob_column = null
WHERE my_id = id
我已经尝试了这两个选项,但它们都有效,但我不知道哪个选项更适合我想要实现的目标 . 我试图研究这个问题,但不幸的是我无法找到我想要的确切答案 . 有没有人有任何建议?
先感谢您 .
3 回答
选择是一个意见问题,因为两个选项都删除了以前的附件 .
我想大多数人会使用
blob_column = null
来表示"no attachment",而blob_column = empty_blob()
则表示"blank file attached" . 所以我建议使用null
,但正如你所说,它可以正常工作 .我认为这取决于你想如何测试空值
http://nuijten.blogspot.com.au/2009/11/empty-clob-is-not-null-its-not-null.html
如果使用empty_blob()更新blob列,则必须在选择以下记录时注意:
但是如果你用null更新你的blob列,你可以简单地写: