读取长数据类型并将其写入另一个长数据类型

时间:2010-02-26 12:37:40

标签: oracle stored-procedures oracle10g

我有一点探索:

使用SP,从表SYSADM.aaTest读取数据并将其放入MYSCHEMA.aaTest 现在我的问题是这个表中有Long类型。

desc aaTest
Name                           Null     Typ
------------------------------ -------- ----------------
ID_TEST                        NOT NULL NUMBER
RELEASE                                 NUMBER 
NAME                                    VARCHAR2(50)
XML_FILE                                LONG()   

一些XML_File的长度超过32760个字符:/

我的程序如下:

create or replace
PROCEDURE  aaTest_Proc  
(  
p_persid IN person.persid%TYPE DEFAULT NULL  -- used for errormanagemant 
) 
IS 
v_errornum NUMBER   :=0; 
v_errormsg VARCHAR2(4000) :=NULL; 

BEGIN   

for rec in(
select id_patch , release, NAME , xml_file
FROM sysadm.aaTest  
)

loop


 INSERT INTO MYSCHEMA.aaTest
( id_patch , release , NAME , XML_File ) 
VALUES
( rec.id_patch , rec.release , rec.NAME , rec.xml_file );

End loop;

Exception
…

有没有办法将它们解读出来并将其写回另一张表? 顺便说一下,这个版本适用于低于32k char的文件,但更多会出错

btw2:我知道CLOB会更好,但是我无法将列更改为CLOB所以我需要留在Long:/

那是你的帮助 AURO

1 个答案:

答案 0 :(得分:2)

你不能用pl / sql插入大于32k的LONG。您可以使用COPY command from SQL*Plus to move LONGs

另见:

  

how to select and insert a long type column