oracle - 如何在ORACLE中使用SQL UPDATE命令将BLOB数据 append/连接到BLOB列

标签 oracle append blob

我需要将数据 append 到我的BLOB字段中,
如何使用UPDATE命令来做到这一点?
我要问的是;是否有可能连接Blob数据,以便我最终可以将其设置为像
更新BLOB_table

BLOB_field = BLOB_field + BLOB_data

我尝试使用DBMS_LOB.APPEND,但是它没有返回值;所以我创建了一个函数,该函数给我一个错误“指定了无效的LOB定位器”

CREATE OR REPLACE FUNCTION MAKESS.CONCAT_BLOB(A in BLOB,B in BLOB) RETURN BLOB IS
 C BLOB;
BEGIN
DBMS_LOB.APPEND(c,A);
DBMS_LOB.APPEND(c,B);
RETURN c;
END;
/

最佳答案

您需要使用 DBMS_LOB.createtemporary 创建一个临时Blob:

SQL> CREATE OR REPLACE FUNCTION CONCAT_BLOB(A IN BLOB, B IN BLOB) RETURN BLOB IS
  2     C BLOB;
  3  BEGIN
  4     dbms_lob.createtemporary(c, TRUE);
  5     DBMS_LOB.APPEND(c, A);
  6     DBMS_LOB.APPEND(c, B);
  7     RETURN c;
  8  END;
  9  /

Function created

然后,您应该可以在更新语句中使用它:
SQL> CREATE TABLE t (a BLOB, b BLOB, c BLOB);

Table created

SQL> INSERT INTO t VALUES
  2     (utl_raw.cast_to_raw('aaa'), utl_raw.cast_to_raw('bbb'), NULL);

1 row inserted

SQL> UPDATE t SET c=CONCAT_BLOB(a,b);

1 row updated

SQL> SELECT utl_raw.cast_to_varchar2(a),
  2         utl_raw.cast_to_varchar2(b),
  3         utl_raw.cast_to_varchar2(c)
  4  FROM t;

UTL_RAW.CAST_TO_VARCHAR2(A UTL_RAW.CAST_TO_VARCHAR2(B UTL_RAW.CAST_TO_VARCHAR2(C
-------------------------- -------------------------- --------------------------
aaa                        bbb                        aaabbb 

关于oracle - 如何在ORACLE中使用SQL UPDATE命令将BLOB数据 append/连接到BLOB列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6570868/

相关文章:

javascript - 使用 google 脚本将 blob 数组附加到 google 文档

oracle - 从 oracle db 截断表时出错

php - 需要帮助将 mysqli_fetch_array 引用转换为相应的 OCI 引用

c - 指向链表开头的指针

sql - 甲骨文10 : Using HEXTORAW to fill in blob data

javascript - 有没有办法阻止IE10/IE11显示打开或保存提示

SQL - 删除重复的元组,即使值是无序的

oracle - Coldfusion oracle jdbc Macromedia 与 Thin

javascript - 使用javascript在网页中 append 重复图像

python - 按元素将单行 append 到 Pandas 数据框中