oracle中用 pl/sql 处理 LONG RAW 大字段的问题(200分)

  • 主题发起人 主题发起人 xiaoli1740
  • 开始时间 开始时间
X

xiaoli1740

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,问题是这样的:
目前有一个表:CREATE TABLE BOOKFILE (id NUMBER, FILEDATA LONG RAW);
BOOKFILE 表中存有LONG RAW字段类型的文件,文件大小不定;表中记录数也不定;

我需要重新创建一个新表BOOKFILE2;要求BOOKFILE2中的结构、数据和BOOKFILE保持一致;
现在遇到的问题是不知道怎么把数据拷贝过来BOOKFILE2表中了?要求完全用sql脚本实现,请各位大虾指点一下,感谢!

说下我的拷贝数据的pl/sql:
Declare
CURSOR S_cur IS SELECT * from BOOKFILE;
S_rec S_cur%ROWTYPE; --这里直接定义为long raw也是一样的错误,没辙了~:(
BEGIN
insert into BOOKFILE2(ID ,FILEDATA ) select ID, null from BOOKFILE;
OPEN S_cur;
LOOP
FETCH S_cur INTO S_rec; --不知何故,总是在这里报错:ORA-06502: PL/SQL: 数字或值错误
EXIT WHEN S_cur%NOTFOUND;
update BOOKFILE2 set FILEDATA=S_rec.FILEDATA where id=S_rec.id;
END LOOP;
CLOSE S_cur;
END;
/

初步发现是因为文件太大的缘故,小文件可以处理,但怎么解决大文件的问题呢?
 
问题不能沉呀,各位富翁们帮帮小弟呀~[:(][:(][:(]
 
帮你顶上去....
 
顶起,别沉呀~
 
问题尚未解决,焦急等待中~
 
用to_lob就行了,
CREATE TABLE BOOKFILE2 AS select id , to_lob(FILEDATA) as FILEDATA from BOOKFILE
 
谢谢znj_326的回答,可我不想把LONG RAW字段类型转换为blob,这个该怎么处理?

当把手工create BOOKFILE2 后,
再insert into BOOKFILE2 select id,to_lob(FILEDATA) as FILEDATA from BOOKFILE;
再insert into BOOKFILE select id,to_lob(FILEDATA) as FILEDATA from BOOKFILE2;
最后发现BOOKFILE中大字段内容丢失了,怎么处理?请指教~
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部