sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag undvika råvariabel längd för långa fel i SQL Developer?

En RAW är begränsad till 2000 byte. Om din data är längre än så måste du lagra den i en CLOB och konvertera sedan CLOB till en BLOB vilket tyvärr är lite mer komplicerat än string_to_raw fungera. Något liknande detta kommer att fungera förutsatt att du kan tilldela hela strängen till en CLOB variabel som ska fungera så länge som strängen är mindre än 32676 byte lång. Om det är längre än så måste du skriva till CLOB i bitar och konvertera sedan till en BLOB .

declare
  l_blob        blob;
  l_clob        clob := rpad('{"foo": {"id": "1", "value": "2", "name": "bob"}}',3200,'*');
  l_amt         integer := dbms_lob.lobmaxsize;
  l_dest_offset integer := 1;
  l_src_offset  integer := 1;
  l_csid        integer := dbms_lob.default_csid;
  l_ctx         integer := dbms_lob.default_lang_ctx;
  l_warn        integer;
begin
  dbms_lob.createTemporary( l_blob, false );
  dbms_lob.convertToBlob( l_blob,
                          l_clob,
                          l_amt,
                          l_dest_offset,
                          l_src_offset,
                          l_csid,
                          l_ctx,
                          l_warn );
  update json_data
     set data = l_blob;
end;
/


  1. Jämför RDS vs EC2 för att hantera MySQL eller MariaDB på AWS

  2. Hur man krypterar en lagrad procedur i SQL Server

  3. SQL-kommandot avslutades inte korrekt?

  4. De bästa verktygen med öppen källkod för PostgreSQL-migrering