下面是我的目标表:
CREATE TABLE qon (x clob);
下面是抛出错误的代码:
DECLARE
l_clob clob := '32769 chars+ ';
BEGIN
FOR i IN 1..2
LOOP
INSERT INTO qon (x) VALUES (empty_clob()) --Insert an "empty clob" (not insert null)
RETURNING x INTO l_clob; -- Now we can append content to clob (create a 400,000 bytes clob)
FOR j IN 1..3 LOOP
dbms_lob.append(l_clob, rpad ('',4000,'')); --dbms_lob.append(l_clob, 'string chunk to be inserted (maximum 4000 characters at a time)');
END LOOP;
END LOOP;
END;
对不起,明天会纠正的。这个想法--不知何故插入字符串超过32767
http://www.oradev.com/dbms_lob.jsp
如何用一个字段作为CLOB编写oracle插入脚本?http://www.techonthenet.com/oracle/functions/rpad.php
如何在Oracle表中插入/更新较大的数据?
谢谢
你似乎明白这个问题,我不知道为什么你在执行上有困难。
以下是我对您的表的版本:
create table qon
( id number
, txt clob
, len number )
/
下面是我的代码版本:
declare
l_clob clob;
-- 4000 characters is the limit for RPAD in SQL
l_str varchar2 (32767);
n number;
begin
l_str := rpad ('string chunk to be inserted (maximum 32767) characters at a time',32767,'+');
dbms_lob.createtemporary (l_clob,true );
<< recordz >>
for i in 1..2 loop
<< appendz >>
for j in 1..10 loop
dbms_lob.append (l_clob, l_str);
end loop appendz;
insert into qon
values (i, l_clob, dbms_lob.getlength(l_clob))
returning qon.len into n;
dbms_output.put_line('#'||i||' length of clob = '||n);
end loop recordz;
dbms_lob.freetemporary (l_clob);
end;
/
...
21* end;
#1 length of clob = 327670
#2 length of clob = 655340
PL/SQL procedure successfully completed.
SQL>
首先为我的英语感到抱歉。 我试图插入大约15000行,问题是有一个CLOB类型的列可能有超过4000个字符,给出错误ORA-01704,我知道如何像这样一个接一个地插入:TO_CLOB(string)TO_CLOB(string)并且它工作,但是我有大约1000个这样的情况发生,我不想手动执行,你能想到什么方法来插入它们? 谢谢你。
如何向CLOB类型列插入超过4000个字符? 导致错误: ORA-01704:字符串太长。 当我阅读Oracle参考时,可以最大节省4GB(千兆字节)?
问题内容: 想通过一个简单的 sql 脚本(例如填充测试数据库)将文件插入到 BLOB 字段中。我知道如何通过代码做到这一点,但我找不到如何执行 sql 脚本本身。 我试图通过路径,即 但这失败了。 在代码中(例如 java),很容易创建一个 File 对象并将其传入,但是直接从 sql 脚本中,我被卡住了...... 任何想法? 问题答案: 为了测试,您可以插入文字十六进制字节或使用该函数,如下
问题内容: 我正在尝试使用H2的runscript运行sql脚本。 该表之一包含一个长文本类型,该类型存储了一个xml文档(来自SAP数据库) 因此,Insert语句包含XML的长文本(大约200行XML),虽然很难看,但仍然可以使用。 在SQL解析期间,H2因ArrayOutOfBoundException而崩溃。 插入语句接受的长度是否有限制? 在nsert中,我使用刻度(如mysql中所使用
我有这样的设置: 所有.飞镖只是导入脚本1.飞镖和脚本2.dart并调用它们的主要。目标是在细节下有一堆可以单独运行的脚本。此外,我想要一个单独的 all.dart 脚本,可以一次运行所有脚本。这将使调试单个脚本更简单,但仍允许所有脚本运行。 all.dart 脚本1.飞镖 脚本2.dart 所以,这是工作,我看到运行时预期的打印语句all.dart但我有两个问题。 首先,我必须在详细信息下软链接
问题内容: 如何按字符串长度过滤? 此代码段: 给了我以下错误: 在哪里: 问题答案: 您需要使用SQL函数生成器来创建函数: