因为我想写到存储过程里面,不知如何操作?
19 个解决方案
#1
SQL> create table test_clob
2 (text clob);
Table created.
SQL> insert into test_clob (text)
2 values ('12345678');
1 row created.
SQL> insert into test_clob (text)
2 values ('987654321');
1 row created.
SQL> select * from test_clob;
TEXT
-------------------------------------------------------------------12345678
987654321
2 (text clob);
Table created.
SQL> insert into test_clob (text)
2 values ('12345678');
1 row created.
SQL> insert into test_clob (text)
2 values ('987654321');
1 row created.
SQL> select * from test_clob;
TEXT
-------------------------------------------------------------------12345678
987654321
#2
我也想知道。
#3
这不是和一般的表的操作一样吗?
怎么在CLOB类型的表中在SQL*PL中插入二进制文件?
怎么在CLOB类型的表中在SQL*PL中插入二进制文件?
#4
感谢 KingSunSha(弱水三千)
这个写到存储过程里应该没有问题吧
还有个问题,这个clob值如何传到存储过程里面,varchar2只能是4000,参数如何写?
我先给你20分,OK?
这个写到存储过程里应该没有问题吧
还有个问题,这个clob值如何传到存储过程里面,varchar2只能是4000,参数如何写?
我先给你20分,OK?
#5
这儿有我做的关于bile,blob的操作示例文档,oracle8.15调试通过,可以发给需要的同志们。
不过,不好意思啊,我需要点专家分,呵呵。
不过,不好意思啊,我需要点专家分,呵呵。
#6
搞错,是关于bfile,blob的操作示例文档
:)
:)
#7
如何给你专家分?请告之
#8
如何给你专家分?请告之
#9
to dj12(令少爷) :
你是搂主,本贴的管理,让后给我给分,呵呵,在告诉我你的email,我发给你啊。比较长啊
你是搂主,本贴的管理,让后给我给分,呵呵,在告诉我你的email,我发给你啊。比较长啊
#10
clob里面存2进制的东西恐怕不行吧,
想存2进制用blob
想存2进制用blob
#11
clob里面存2进制的东西恐怕不行吧,
想存2进制用blob
想存2进制用blob
#12
clob里面存2进制的东西恐怕不行吧,
想存2进制用blob
想存2进制用blob
#13
varchar2类型虽然有长度限制,但是你可以分段读取CLOB列的数据。
要用到dbms_lob包。用一个循环调用dbms_lob.read。
declare
v_text varchar2(32767);--每次读取的数据
v_lob clob;
amt binary_integer:=32767;--每次读取的字节数
pos integer:=1;--读取位置
begin
select CLOB列 into v_lob where.....;
loop
dbms_lob.read(v_lob,amt,pos,v_text);
pos:=pos+amt;
.........
end loop;
exception when no_data_found then null; --退出循环
end;
要用到dbms_lob包。用一个循环调用dbms_lob.read。
declare
v_text varchar2(32767);--每次读取的数据
v_lob clob;
amt binary_integer:=32767;--每次读取的字节数
pos integer:=1;--读取位置
begin
select CLOB列 into v_lob where.....;
loop
dbms_lob.read(v_lob,amt,pos,v_text);
pos:=pos+amt;
.........
end loop;
exception when no_data_found then null; --退出循环
end;
#14
我的mail:
dingl@nes.com.cn
j2ee@sohu.com
谢谢
dingl@nes.com.cn
j2ee@sohu.com
谢谢
#15
to : lisam(redplane)
我现在是要将一个大文本插入到数据库中,而这个插入的过程我想用存储过程来实现
在数据库中这个大文本的类型为clob
你给出的是怎样读取出来的代码,不管怎样都要谢谢你的,到最后我肯定会给你分的
我现在是要将一个大文本插入到数据库中,而这个插入的过程我想用存储过程来实现
在数据库中这个大文本的类型为clob
你给出的是怎样读取出来的代码,不管怎样都要谢谢你的,到最后我肯定会给你分的
#16
看到没有,我已经将这个问题的分数又加了20分,如有可能我还会再加的,只要能帮我解决问题即可
谢谢各位!
谢谢各位!
#17
存储过程实现的话可以调用dbms_lob包直接从操作系统中从文件读入,这样就不用写循环了,我看直接存文件最好还是用blob类型。
看一看这个
http://www.greatchinatelecom.com/card/oracle/clob.htm
http://it.sinohome.com/181224/180804.htm
看一看这个
http://www.greatchinatelecom.com/card/oracle/clob.htm
http://it.sinohome.com/181224/180804.htm
#18
问题应该是可以解决了
感谢各位了,尤其是 penitent(只取一瓢)、 lisam(redplane) 、 KingSunSha(弱水三千)
很快会结贴给分
感谢各位了,尤其是 penitent(只取一瓢)、 lisam(redplane) 、 KingSunSha(弱水三千)
很快会结贴给分
#19
declare
v_lob clob;
v_text varchar2(32767);
begin
......
insert into t_tablename
values(...,empty_clob(),...);
select clob_column into v_lob from......for update;
dbms_lob.write(v_lob,length(v_text),1,v_text);
commit;
end;
这样只能插入32767字节,你自己可以改一下。
v_lob clob;
v_text varchar2(32767);
begin
......
insert into t_tablename
values(...,empty_clob(),...);
select clob_column into v_lob from......for update;
dbms_lob.write(v_lob,length(v_text),1,v_text);
commit;
end;
这样只能插入32767字节,你自己可以改一下。
#20
#1
SQL> create table test_clob
2 (text clob);
Table created.
SQL> insert into test_clob (text)
2 values ('12345678');
1 row created.
SQL> insert into test_clob (text)
2 values ('987654321');
1 row created.
SQL> select * from test_clob;
TEXT
-------------------------------------------------------------------12345678
987654321
2 (text clob);
Table created.
SQL> insert into test_clob (text)
2 values ('12345678');
1 row created.
SQL> insert into test_clob (text)
2 values ('987654321');
1 row created.
SQL> select * from test_clob;
TEXT
-------------------------------------------------------------------12345678
987654321
#2
我也想知道。
#3
这不是和一般的表的操作一样吗?
怎么在CLOB类型的表中在SQL*PL中插入二进制文件?
怎么在CLOB类型的表中在SQL*PL中插入二进制文件?
#4
感谢 KingSunSha(弱水三千)
这个写到存储过程里应该没有问题吧
还有个问题,这个clob值如何传到存储过程里面,varchar2只能是4000,参数如何写?
我先给你20分,OK?
这个写到存储过程里应该没有问题吧
还有个问题,这个clob值如何传到存储过程里面,varchar2只能是4000,参数如何写?
我先给你20分,OK?
#5
这儿有我做的关于bile,blob的操作示例文档,oracle8.15调试通过,可以发给需要的同志们。
不过,不好意思啊,我需要点专家分,呵呵。
不过,不好意思啊,我需要点专家分,呵呵。
#6
搞错,是关于bfile,blob的操作示例文档
:)
:)
#7
如何给你专家分?请告之
#8
如何给你专家分?请告之
#9
to dj12(令少爷) :
你是搂主,本贴的管理,让后给我给分,呵呵,在告诉我你的email,我发给你啊。比较长啊
你是搂主,本贴的管理,让后给我给分,呵呵,在告诉我你的email,我发给你啊。比较长啊
#10
clob里面存2进制的东西恐怕不行吧,
想存2进制用blob
想存2进制用blob
#11
clob里面存2进制的东西恐怕不行吧,
想存2进制用blob
想存2进制用blob
#12
clob里面存2进制的东西恐怕不行吧,
想存2进制用blob
想存2进制用blob
#13
varchar2类型虽然有长度限制,但是你可以分段读取CLOB列的数据。
要用到dbms_lob包。用一个循环调用dbms_lob.read。
declare
v_text varchar2(32767);--每次读取的数据
v_lob clob;
amt binary_integer:=32767;--每次读取的字节数
pos integer:=1;--读取位置
begin
select CLOB列 into v_lob where.....;
loop
dbms_lob.read(v_lob,amt,pos,v_text);
pos:=pos+amt;
.........
end loop;
exception when no_data_found then null; --退出循环
end;
要用到dbms_lob包。用一个循环调用dbms_lob.read。
declare
v_text varchar2(32767);--每次读取的数据
v_lob clob;
amt binary_integer:=32767;--每次读取的字节数
pos integer:=1;--读取位置
begin
select CLOB列 into v_lob where.....;
loop
dbms_lob.read(v_lob,amt,pos,v_text);
pos:=pos+amt;
.........
end loop;
exception when no_data_found then null; --退出循环
end;
#14
我的mail:
dingl@nes.com.cn
j2ee@sohu.com
谢谢
dingl@nes.com.cn
j2ee@sohu.com
谢谢
#15
to : lisam(redplane)
我现在是要将一个大文本插入到数据库中,而这个插入的过程我想用存储过程来实现
在数据库中这个大文本的类型为clob
你给出的是怎样读取出来的代码,不管怎样都要谢谢你的,到最后我肯定会给你分的
我现在是要将一个大文本插入到数据库中,而这个插入的过程我想用存储过程来实现
在数据库中这个大文本的类型为clob
你给出的是怎样读取出来的代码,不管怎样都要谢谢你的,到最后我肯定会给你分的
#16
看到没有,我已经将这个问题的分数又加了20分,如有可能我还会再加的,只要能帮我解决问题即可
谢谢各位!
谢谢各位!
#17
存储过程实现的话可以调用dbms_lob包直接从操作系统中从文件读入,这样就不用写循环了,我看直接存文件最好还是用blob类型。
看一看这个
http://www.greatchinatelecom.com/card/oracle/clob.htm
http://it.sinohome.com/181224/180804.htm
看一看这个
http://www.greatchinatelecom.com/card/oracle/clob.htm
http://it.sinohome.com/181224/180804.htm
#18
问题应该是可以解决了
感谢各位了,尤其是 penitent(只取一瓢)、 lisam(redplane) 、 KingSunSha(弱水三千)
很快会结贴给分
感谢各位了,尤其是 penitent(只取一瓢)、 lisam(redplane) 、 KingSunSha(弱水三千)
很快会结贴给分
#19
declare
v_lob clob;
v_text varchar2(32767);
begin
......
insert into t_tablename
values(...,empty_clob(),...);
select clob_column into v_lob from......for update;
dbms_lob.write(v_lob,length(v_text),1,v_text);
commit;
end;
这样只能插入32767字节,你自己可以改一下。
v_lob clob;
v_text varchar2(32767);
begin
......
insert into t_tablename
values(...,empty_clob(),...);
select clob_column into v_lob from......for update;
dbms_lob.write(v_lob,length(v_text),1,v_text);
commit;
end;
这样只能插入32767字节,你自己可以改一下。