BLOB /CLOB 타입 컬럼에는 각각 BLOB/CLOB 타입 값이 저장되며, 바이너리 또는 문자열 데이터를 입력하는 경우에는 각각 BIT_TO_BLOB( ) 함수/CHAR_TO_CLOB( ) 함수를 사용하여 명시적으로 타입을 변환을 수행하여야 한다.
INSERT 문을 사용하여 LOB 컬럼에 값을 입력하면, 내부적으로는 외부 저장소에 파일을 생성하여 해당 데이터를 저장하고, 실제 컬럼 값으로 해당 파일의 경로(Locator) 정보를 저장한다.
DELETE 문을 사용하여 LOB 컬럼이 존재하는 레코드를 삭제하면, 해당 LOB 컬럼 값이 참조하는 파일을 함께 삭제한다.
UPDATE 문을 사용하여 LOB 컬럼 값을 변경하는 경우, 새로운 값이 NULL인지에 따라 다음과 같이 동작하면서 컬럼 값을 변경한다.
//inserting data after explicit type conversion into CLOB type column
INSERT INTO doc_t (doc_id, content) VALUES ('doc-1', CHAR_TO_CLOB('This is a Dog'));
INSERT INTO doc_t (doc_id, content) VALUES ('doc-2', CHAR_TO_CLOB('This is a Cat'));
//inserting data after explicit type conversion into BLOB type column
INSERT INTO image_t VALUES ('image-0', 'doc-0', BIT_TO_BLOB(X'000001'));
INSERT INTO image_t VALUES ('image-1', 'doc-1', BIT_TO_BLOB(X'000010'));
INSERT INTO image_t VALUES ('image-2', 'doc-2', BIT_TO_BLOB(X'000100'));
//inserting data from a sub-query result
INSERT INTO image_t SELECT 'image-1010', 'doc-1010', image FROM image_t WHERE image_id = 'image-0';
//updating CLOB column value to NULL
UPDATE doc_t SET content = NULL WHERE doc_id = 'doc-1';
//updating CLOB column value
UPDATE doc_t SET content = CHAR_TO_CLOB('This is a Dog') WHERE doc_id = 'doc-1';
//updating BLOB column value
UPDATE image_t SET image = (SELECT image FROM image_t WHERE image_id = 'image-0') WHERE image_id = 'image-1';
//deleting BLOB column value and its referencing files
DELETE FROM image_t WHERE image_id = 'image-1010';