函数说明
官方文档
DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY BLOB,
amount IN BINARY_INTEGER,
buffer IN RAW
);
DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
amount IN BINARY_INTEGER,
buffer IN VARCHAR2 CHARACTER SET lob_loc%CHARSET
);
建一个表,用来测试
CREATE TABLE "T_FIELDS" (
"ID" NUMBER NOT NULL ENABLE,
"F_BLOB" BLOB,
"F_CLOB" CLOB,
"F_NCLOB" NCLOB,
PRIMARY KEY ("ID")
);
将字符串插入Blob字段
DECLARE
content BLOB;
buff VARCHAR2(4000);
BEGIN
dbms_lob.createtemporary(content, true);
FOR i IN 1..1000 LOOP
buff := buff||'1234';
END LOOP;
dbms_lob.writeAppend(content, LENGTHB(buff), UTL_RAW.CAST_TO_RAW(buff));
buff := '第二段字符串....省略一万字....';
dbms_lob.writeAppend(content, LENGTHB(buff), UTL_RAW.CAST_TO_RAW(buff));
INSERT INTO "T_FIELDS" ("ID", "F_BLOB") VALUES (1, content);
commit;
END;
将字符串插入Clob字段
DECLARE
content CLOB;
buff VARCHAR2(4000);
BEGIN
dbms_lob.createtemporary(content, true);
FOR i IN 1..1000 LOOP
buff := buff||'1234';
END LOOP;
dbms_lob.writeAppend(content, LENGTH(buff), buff);
buff := '第二段字符串....省略一万字....';
dbms_lob.writeAppend(content, LENGTH(buff), buff);
INSERT INTO "T_FIELDS" ("ID", "F_CLOB") VALUES (2, content);
commit;
END;
其实Clob还有种简便写法
DECLARE
content T_FIELDS.F_CLOB%TYPE;
buff1 VARCHAR2(4000);
buff2 VARCHAR2(4000);
BEGIN
FOR i IN 1..1000 LOOP
buff1 := buff1 ||'1234';
buff2 := buff2 ||'0987';
END LOOP;
content := buff1 || buff2;
INSERT INTO "T_FIELDS" ("ID", "F_CLOB") VALUES (3, content);
commit;
END;
如果本文对你有帮助,还请点个赞喔!(●’◡’●)