【问题标题】:How do I select part of a BLOB field in Oracle?如何在 Oracle 中选择部分 BLOB 字段?
【发布时间】:2009-12-05 23:12:09
【问题描述】:

我在 Oracle 中有一个表,它将文件作为字节数组存储在 BLOB 字段中。我希望我的客户能够以小块的形式下载存储的文件(而不是一次下载整个文件),这样我就可以显示进度条。

如何编写只检索 BLOB 字段的部分内容的 Oracle 查询?我想它会是这样的:

SELECT PARTOF(BLOBFIELD, 1000, 2000) AS CHUNK FROM tbl WHERE ID = 1

如果我想从 BLOBFIELD 中获取 1000 个字节,从 2000 字节开始。

作为次要问题,这是否存在任何性能问题?如果 Oracle 必须将整个 BLOB 字段加载到内存中才能返回其中的一部分,那么这不是一个好主意。

【问题讨论】:

  • 我建议先尝试以另一种方式解决此问题。您使用什么语言/框架等与您的 Oracle 数据库通信?我认为您可以更简单地实现 Oracle 能力之外的进度条报告。
  • 我的客户端是调用 ASP.NET Web 服务的 Windows Mobile 设备。要使进度条正常工作,客户端需要能够对 Web 服务进行多次调用,每次调用都会返回整个文件的一部分。为了做到这一点,我必须能够编写一个只返回一个 BLOB 字段的查询。
  • 如果您将文件存储在文件系统中,您就不会有这样的问题。
  • "如果您将文件存储在文件系统中,您就不会有这样的问题。"没错,你会有不同的(更糟糕的?)问题!
  • “没错,你会有不同的(更糟糕的?)问题!”没错,虽然问题的旁观者认为更糟

标签: oracle


【解决方案1】:

【讨论】:

  • DBMS_LOB.SUBSTR 是我真正需要的,但我在你的链接中找到了它,所以你得到了检查。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2020-05-26
  • 2017-06-14
  • 2012-10-16
  • 2011-09-13
  • 2015-01-14
  • 2012-12-30
相关资源
最近更新 更多