Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment écrire un script d'insertion oracle avec un champ comme CLOB ?

Gardez à l'esprit que les chaînes SQL ne peuvent pas dépasser 4000 octets, tandis que Pl/SQL peut avoir des chaînes aussi grandes que 32767 octets. voir ci-dessous un exemple d'insertion d'une grande chaîne via un bloc anonyme qui, je pense, fera tout ce dont vous avez besoin.

notez que j'ai changé le varchar2(32000) en CLOB

set serveroutput ON 
CREATE TABLE testclob 
  ( 
     id NUMBER, 
     c  CLOB, 
     d  VARCHAR2(4000) 
  ); 

DECLARE 
    reallybigtextstring CLOB := '123'; 
    i                   INT; 
BEGIN 
    WHILE Length(reallybigtextstring) <= 60000 LOOP 
        reallybigtextstring := reallybigtextstring 
                               || '000000000000000000000000000000000'; 
    END LOOP; 

    INSERT INTO testclob 
                (id, 
                 c, 
                 d) 
    VALUES     (0, 
                reallybigtextstring, 
                'done'); 

    dbms_output.Put_line('I have finished inputting your clob: ' 
                         || Length(reallybigtextstring)); 
END; 

/ 
SELECT * 
FROM   testclob; 


 "I have finished inputting your clob: 60030"