반응형
ORACLE의 SQL UPDATE 명령을 사용하여 BLOB 열에 BLOB 데이터를 추가/연결하려면 어떻게 해야 합니까?
BLOB 필드에 데이터를 추가해야 하는데 UPDATE 명령을 사용하여 어떻게 해야 합니까?제가 묻고 싶은 것은, 결국 UPDATE BLOB_table SET BLOB_field = BLOB_field + BLOB_data와 같은 필드로 설정할 수 있도록 BLOB 데이터를 연결할 수 있습니까?
DBMS_LOB을 사용해 보았습니다.ADPLD 그러나 값을 반환하지 않아 "잘못된 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;
/
다음을 사용하여 임시 블롭을 생성해야 합니다.
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
PL/SQL blob의 도움으로 사용자 지정 기능이 전혀 필요 없이 제 자리에서 업데이트할 수 있습니다.
BEGIN
FOR c IN (select a, b from t where a is not null for update) LOOP
DBMS_LOB.APPEND(c.a, c.b);
END LOOP;
END;
/
언급URL : https://stackoverflow.com/questions/6570868/how-can-i-append-concatenate-blob-data-to-a-blob-column-using-sql-update-command
반응형
'programing' 카테고리의 다른 글
변수 형식을 선행 0이 있는 4자리로 지정 (0) | 2023.10.10 |
---|---|
mySQL에서 1, 10, 11, 12가 아닌 1, 2, 3을 주문하는 방법 (0) | 2023.10.10 |
문서의 스크롤 위치를 얻으려면 어떻게 해야 합니까? (0) | 2023.10.10 |
WordPress i18n 프로젝트에서 변수로 내부 링크를 트리거하여 접두사를 추가합니다. (0) | 2023.10.10 |
모든 Excel 시트를 C#의 DataSet으로 가져오는 방법 (0) | 2023.10.10 |