oracleblobclob类型的字段插⼊字符串函数说明
-- BLOB类型追加,amount为要追加的字节数,buffer类型为RAW
DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY BLOB,
amount  IN BINARY_INTEGER,
buffer  IN RAW
);
-- CLOB类型追加,amount为要追加的字符数,buffer类型为VARCHAR2
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
);
为什么oracle网站进不去建⼀个表,⽤来测试
CREATE TABLE"T_FIELDS"(
"ID" NUMBER NOT NULL ENABLE,
"F_BLOB"BLOB,
"F_CLOB" CLOB,
"F_NCLOB" NCLOB,
PRIMARY KEY("ID")
);
将字符串插⼊Blob字段
-
--------------------------------------------------------------------
-- 将字符串插⼊Blob字段
---------------------------------------------------------------------
DECLARE
content BLOB;-- 或者使⽤下⾯这种写法:表名.字段名%TYPE
-- content T_FIELDS.F_BLOB%TYPE; -- Blob类型
buff VARCHAR2(4000);
--  amount BINARY_INTEGER:=0;  -- amount := amount + LENGTHB(buff);
BEGIN
-- 初始化blob
atetemporary(content,true);
-
- 拼出4000个字符(注意:1个中⽂=2个字符)
FOR i IN1..1000LOOP
buff := buff||'1234';
END LOOP;
-- 向blob中追加内容,LENGTHB()取的是字节数,不是字符数,UTL_RAW.CAST_TO_RAW()将字符串转换为RAW  dbms_lob.writeAppend(content, LENGTHB(buff), UTL_RAW.CAST_TO_RAW(buff));
-- 如果字符串过长,需分为多次放⼊blob中,否则会超出varchar2的长度限制
buff :='第⼆段字符串....省略⼀万字....';
-- 再次向blob中追加内容
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字段
---------------------------------------------------------------------
-- 将字符串插⼊Clob字段
---------------------------------------------------------------------
DECLARE
content CLOB;-- 或者使⽤下⾯这种写法:表名.字段名%TYPE
-- content T_FIELDS.F_CLOB%TYPE; -- Clob类型
buff VARCHAR2(4000);
BEGIN
-- 初始化clob
atetemporary(content,true);
-- 拼出4000个字符(注意:1个中⽂=2个字符)
FOR i IN1..1000LOOP
buff := buff||'1234';
END LOOP;
-- 向clob中追加内容,LENGTH()取的是字符数,此处不⽤字节数
dbms_lob.writeAppend(content, LENGTH(buff), buff);
-- 如果字符串过长,需分为多次放⼊clob中,否则会超出varchar2的长度限制 buff :='第⼆段字符串....省略⼀万字....';
-- 再次向clob中追加内容
dbms_lob.writeAppend(content, LENGTH(buff), buff);
INSERT INTO"T_FIELDS"("ID","F_CLOB")VALUES(2, content); commit;
END;
其实Clob还有种简便写法
---------------------------------------------------------------------
-- 将字符串插⼊Clob字段(简便写法)
---------------------------------------------------------------------
DECLARE
-- content CLOB; -- 或者使⽤下⾯这种写法:表名.字段名%TYPE
content T_FIELDS.F_CLOB%TYPE;-- Clob类型
buff1 VARCHAR2(4000);
buff2 VARCHAR2(4000);
BEGIN
-
- 拼出4000个字符(注意:1个中⽂=2个字符)
FOR i IN1..1000LOOP
buff1 := buff1 ||'1234';
buff2 := buff2 ||'0987';
END LOOP;
-- 例如:通过这种拼接的⽅式给Clob变量赋值
-- content := '第⼀段内容'||'第⼆段内容';
content := buff1 || buff2;
INSERT INTO"T_FIELDS"("ID","F_CLOB")VALUES(3, content); commit;
END;
如果本⽂对你有帮助,还请点个赞喔!(●’◡’●)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。