【发布时间】: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