create table test (a long); insert into test values ('bllllllllllllllllllllllaaaaaaaaaaaaaaaaa'); select to_lob(a) from test; ERROR at line 1: ORA-00932: inconsistent datatypes: expected - got LONG create table test2 (b clob); insert into test2(b) select to_lob(a) from test; select dbms_lob.getlength(b) from test2; DBMS_LOB.GETLENGTH(B) --------------------- 40
Zur Bestimmung der Länge bräuchte man also eine Hilfstabelle, in die man den LONG-Wert einfügen könnte, um seine Länge dann mittels dbms_lob.getlength zu ermitteln - was natürlich eher umständlich ist.
Alternativ kann man die Länge auch in einem PL/SQL-Block bestimmen:
DECLARE long_var LONG; BEGIN SELECT a INTO long_var FROM test; DBMS_OUTPUT.PUT_LINE('LOB_LENGTH:' || LENGTH(long_var)); end; / LOB_LENGTH:40 PL/SQL-Prozedur erfolgreich abgeschlossen.
Aber eine Funktion, die aus einem SQL-Statement heraus aufgerufen werden kann, wird daraus leider nicht, weil solche Funktionen keine LONGs als Parameter annehmen.
Keine Kommentare:
Kommentar veröffentlichen