Nun, Length() nimmt ein Zeichenargument (CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB oder NCLOB), während VSize() so ziemlich jeden Datentyp annimmt. Wenn Sie also Length() einen Nicht-Zeichen-Datentyp übergeben, muss eine implizite Konvertierung erfolgen.
Die Länge hängt auch von den Zeichensätzen ab.
drop table daa_test;
create table daa_test as select sysdate dt from dual;
alter session set nls_date_format = 'YYYY-MM-DD';
select vsize(dt) from daa_test;
select length(dt) from daa_test;
alter session set nls_date_format = 'YYYY-MM-DD HH24:mi:ss';
select vsize(dt) from daa_test;
select length(dt) from daa_test;
... geben ...
drop table daa_test succeeded.
create table succeeded.
alter session set succeeded.
VSIZE(DT)
----------------------
7
1 rows selected
LENGTH(DT)
----------------------
10
1 rows selected
alter session set succeeded.
VSIZE(DT)
----------------------
7
1 rows selected
LENGTH(DT)
----------------------
19
1 rows selected
VSize ist IMHO wirklich nützlich, um den internen Speicherbedarf von Daten zu verstehen.