首页 文章

Oracle Apex - 我应该使用Empty_BLOB()还是null?

提问于
浏览
2

我目前正在使用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 回答

  • 2

    选择是一个意见问题,因为两个选项都删除了以前的附件 .

    我想大多数人会使用 blob_column = null 来表示"no attachment",而 blob_column = empty_blob() 则表示"blank file attached" . 所以我建议使用 null ,但正如你所说,它可以正常工作 .

  • 0
  • 0

    如果使用empty_blob()更新blob列,则必须在选择以下记录时注意:

    假设您想要blob列中有一些文件(有用)的所有记录,那么您必须选择如下所示

    select * from your_table where SYS.DBMS_LOB.GETLENGTH(blob_column) > 0;
    

    但是如果你用null更新你的blob列,你可以简单地写:

    select * from your_table where blob_column is not null;
    

相关问题