2 votes

Lire un type de données long et le transformer en un autre type de données long.

J'ai un petit Probelem :

J'essaie, avec un SP, de lire les données de la table SYSADM.aaTest et de les placer dans MYSCHEMA.aaTest. Mon problème est que cette table contient le type Long.

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

Eh bien, certains fichiers XML_File sont plus longs que 32760 caractères :/

ma procédure ressemble à ceci :

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
…

Y a-t-il un moyen de les lire complètement et de les réécrire dans l'autre table ? Cette version fonctionne avec des fichiers de moins de 32k char mais plus, il y aura une erreur.

btw2 : je sais que CLOB serait mieux, mais je ne suis pas en mesure de changer la colonne en CLOB donc je dois rester avec Long :/

c'est pour votre aide Auro

2voto

Vincent Malgrat Points 42899

Vous ne pouvez pas insérer un LONG plus grand que 32k avec pl/sql. Vous pouvez utiliser la fonction Commande COPY de SQL*Plus pour déplacer des LONGs .

Voir aussi :

comment sélectionner et insérer une colonne de type long

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X