我想创建一个插入脚本,它只用于将一条记录插入一个表中.
它有5列,其中一列是CLOB类型.
每当我尝试,它说无法插入字符串是如此之久.大于4000.
我需要一个带有clob的insert语句作为一个字段.
INSERT INTO tbltablename
(id,
NAME,
description,
accountnumber,
fathername)
VALUES (1,
N'Name',
clob'some very long string here, greater than 4000 characters',
23,
'John') ;
Run Code Online (Sandbox Code Playgroud)
Har*_*son 19
请记住,SQL字符串不能大于4000字节,而Pl/SQL可以包含大到32767字节的字符串.请参阅下面的示例,通过匿名块插入一个大字符串,我相信它会完成您需要做的所有事情.
注意我将varchar2(32000)更改为CLOB
set serveroutput ON
CREATE TABLE testclob
(
id NUMBER,
c CLOB,
d VARCHAR2(4000)
);
DECLARE
reallybigtextstring CLOB := '123';
i INT;
BEGIN
WHILE Length(reallybigtextstring) <= 60000 LOOP
reallybigtextstring := reallybigtextstring
|| '000000000000000000000000000000000';
END LOOP;
INSERT INTO testclob
(id,
c,
d)
VALUES (0,
reallybigtextstring,
'done');
dbms_output.Put_line('I have finished inputting your clob: '
|| Length(reallybigtextstring));
END;
/
SELECT *
FROM testclob;
"I have finished inputting your clob: 60030"
Run Code Online (Sandbox Code Playgroud)
我用比投票最多的答案更简单的解决方案解决了我的问题。
您必须将大 clob 字符串分成多个字符串,每个字符串少于 4000 个字符,使用 方法转换每个字符串to_clob,然后使用||运算符将它们连接起来。
这是最终插入语句的示例:
INSERT INTO tbltablename
(id,
name,
big_clob_description)
VALUES (1,
N'A Name',
to_clob('string with less than 4000 chars')
|| to_clob('rest of string here, with less than 4000 chars')
) ;
Run Code Online (Sandbox Code Playgroud)
我的插入代码是由脚本生成的,打破字符串并不困难。
| 归档时间: |
|
| 查看次数: |
120922 次 |
| 最近记录: |