如何连接BLOB字段(Oracle)?

时间:2012-08-20 12:54:01

标签: oracle plsql blob concatenation

是否可以从特定表中连接A1和A2(例如):

CREATE TABLE MY_SCHEME.CONC_BLOB
(
  A1       BLOB,
  A1_SORT  NUMBER(20),
  T_TYPE   VARCHAR2(9 BYTE),
  A2       BLOB,
  A2_SORT  NUMBER(20),
  A3       VARCHAR2(32 BYTE),
  A4       BLOB,
  A5       VARCHAR2(8 BYTE)
)

? 怎么样?

3 个答案:

答案 0 :(得分:2)

BLOB可以与DBMS_LOB包连接,特别是与APPEND程序连接。但是你需要使用一些PL / SQL迭代相关的行并调用该过程。

我不太明白下一张表的含义,所以我不能举个例子。

<强>更新

相关的PL / SQL可能如下所示:

DECLARE
  a1_lob BLOB;
  a2_lob  BLOB;

BEGIN
  SELECT A1, A2 INTO a1_lob, a2_lob
  FROM CONC_BLOB
  WHERE A1_SORT = 'some value'
  FOR UPDATE;

  dbms_lob.append(a1_lob, a2_lob);
  COMMIT;
END;

答案 1 :(得分:1)

仅供参考:如果您打算使用blob来存储大文本(这就是我想你想连接它们的原因)我建议使用CLOB。它允许你使用||最好的连接部分。不幸的是,您可能面临||的问题当clob的长度超过32767

答案 2 :(得分:1)

这是我的解决方案,可使用帮助程序表类型和存储函数将任意数量的BLOB连接到单个BLOB中:

df.index.duplicated()

另请参阅Oracle 10: Using HEXTORAW to fill in blob data中的多个RAW连接。