Die einfache Lösung ist, CLOB in BLOB zu werfen und dann Länge von BLOB anzufordern!
Das Problem ist, dass Oracle keine Funktion haben, die CLOB zu BLOB werfen, aber wir können einfach eine Funktion definieren, das zu tun,
create or replace
FUNCTION clob2blob (p_in clob) RETURN blob IS
v_blob blob;
v_desc_offset PLS_INTEGER := 1;
v_src_offset PLS_INTEGER := 1;
v_lang PLS_INTEGER := 0;
v_warning PLS_INTEGER := 0;
BEGIN
dbms_lob.createtemporary(v_blob,TRUE);
dbms_lob.converttoblob
(v_blob
, p_in
, dbms_lob.getlength(p_in)
, v_desc_offset
, v_src_offset
, dbms_lob.default_csid
, v_lang, v_warning
);
RETURN v_blob;
END;
Der SQL-Befehl Nummer zu erhalten verwenden Bytes
ist
SELECT length(clob2blob(fieldname)) as nr_bytes
oder
SELECT dbms_lob.getlength(clob2blob(fieldname)) as nr_bytes
ich das auf Oracle 10g getestet haben ohne Unico mit de (UTF-8). Aber ich denke, dass diese Lösung richtig sein muss Verwendung von Unicode (UTF-8) Oracle-Instanz :-)
ich dank Nashev machen will, das eine Lösung zu konvertieren clob How convert CLOB to BLOB in Oracle? zu Blob und zu diesem Beitrag in Deutsch geschrieben geschrieben hat (Der Code ist in PL/SQL) 13ter.info.blog, die zusätzlich eine Funktion zum Konvertieren von Blob in Clob geben!
Kann jemand die 2 Befehle in Unicode (UTF-8) CLOB testen, also bin ich sicher, dass dies mit Unicode funktioniert?
Warum beschäftigen Sie sich mit der Größe in Bytes des CLOB? – Thanatos
Nicht das OP, aber in meinem Fall habe ich CLOBS über eine DB-Verbindung abgerufen und musste sie in 4000-Byte-Chunks schneiden, und ich wollte wissen, wie viele Chunks ich für meine Daten brauchte. –
Das ist verrückt, ich möchte chinesischen Clob in varchar2 und nicht tun, weil ich die Größe nicht bestimmen kann – Toolkit