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

How can I append/concatenate BLOB data to a BLOB column using SQL UPDATE command in ORACLE(如何在 ORACLE 中使用 SQL UPDATE 命令将 BLOB 数据附加/连接到 BLOB 列)
本文介绍了如何在 ORACLE 中使用 SQL UPDATE 命令将 BLOB 数据附加/连接到 BLOB 列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我需要将数据附加到我的 BLOB 字段中,如何使用 UPDATE 命令执行此操作?我要问的是;是否可以连接 blob 数据,以便我最终可以将其设置为类似的字段更新 BLOB_table放BLOB_field = BLOB_field + BLOB_data

I need to append data to my BLOB field, how can I do this using an UPDATE command? What i am asking is; is it possible to concatenate blob data so that i can eventually set it to a field like UPDATE BLOB_table SET BLOB_field = BLOB_field + BLOB_data

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

I tried using DBMS_LOB.APPEND but it does not return a value; so i created a function which gives me an error of "invalid LOB locator specified"

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:

You need to create a temporary blob with DBMS_LOB.createtemporary:

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

那么你应该可以在更新语句中使用它:

Then you should be able to use it in an update statement:

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 中使用 SQL UPDATE 命令将 BLOB 数据附加/连接到 BLOB 列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

What is the maximum length of data I can put in a BLOB column in MySQL?(我可以在 MySQL 的 BLOB 列中放入的最大数据长度是多少?)
Oracle Database Link - MySQL Equivalent?(Oracle 数据库链接 - MySQL 等价物?)
Equivalent of Oracle’s RowID in MySQL(相当于 MySQL 中 Oracle 的 RowID)
How to use LOAD_FILE to load a file into a MySQL blob?(如何使用 LOAD_FILE 将文件加载到 MySQL blob 中?)
SQL: Repeat a result row multiple times, and number the rows(SQL:多次重复结果行,并对行进行编号)
mysql - making a mechanism similar to Oracle#39;s seqences(mysql - 制作类似于 Oracle 的序列的机制)