sql >> Databáze >  >> RDS >> Oracle

Jak se mohu vyhnout příliš dlouhým chybám s nezpracovanými proměnnými délkami v SQL Developer?

RAW je omezena na 2000 bajtů. Pokud jsou vaše data delší, budete je muset uložit do CLOB a poté převeďte CLOB do BLOB který je bohužel o něco složitější než string_to_raw funkce. Něco takového bude fungovat za předpokladu, že můžete přiřadit celý řetězec k CLOB proměnná, která by měla fungovat, pokud je řetězec kratší než 32 676 bajtů. Pokud je delší, budete muset zapsat do CLOB po částech a poté převést na 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. skalární poddotaz v příkazu if Podmínka v PL/SQL

  2. postgresql migrace JSON na JSONB

  3. OracleCommand SQL Parameters Binding

  4. Počítání počtu výskytů podřetězce v řetězci v PostgreSQL