【问题标题】:Oracle Apex - should I use Empty_BLOB() or null?Oracle Apex - 我应该使用 Empty_BLOB() 还是 null?
【发布时间】:2018-10-22 02:03:09
【问题描述】:

我目前使用的是 Oracle Apex 5.1.2。

我在数据库中创建了一个表,其中包含一个可以保存 BLOB 数据类型的列、一个用于文件名的列和一个用于 MIME 类型的列。

在我的 APEX 应用程序中,我有一个文件浏览页面项目。此页面项目的目的是允许最终用户将文件附加到页面。这部分工作完美 - 用户可以使用该项目浏览文件并将其附加到页面,然后下载文件以查看它。

问题:我希望最终用户能够在需要时删除附件,并且如果他们愿意,可以在其位置附加另一个文件。我的想法是创建一个按钮,并在按钮的设置中将操作设置为“提交页面”,将数据库操作设置为 SQL 更新操作。然后我将创建一个 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

我已经尝试了这两个选项并且它们都有效,但我不知道哪个选项更适合我想要实现的目标。我试图研究这个问题,但不幸的是我找不到我正在寻找的确切答案。有人有什么建议吗?

提前谢谢你。

【问题讨论】:

    标签: oracle oracle-apex oracle-apex-5 oracle-apex-5.1


    【解决方案1】:

    选择是一个见仁见智的问题,因为这两个选项都会删除以前的附件。

    我想大多数人会用blob_column = null 表示“无附件”,而blob_column = empty_blob() 表示“附加空白文件”。所以我建议使用null,但正如你所说,无论哪种方式都可以正常工作。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        如果您使用 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;
        

        【讨论】:

          猜你喜欢
          • 2022-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-06
          • 2015-01-02
          • 1970-01-01
          • 1970-01-01
          • 2018-09-05
          相关资源
          最近更新 更多