version 10r2 declare type rec_type is record( c1 varchar2(1) not null := 'D' ,c2 number not null := 12345 ); rec rec_type; type t is table of number index by pls_integer; c t; type rec2 is record( c1 number ,c2 varchar2(10)); type rec2_type is table of rec2 index by pls_integer; c2 rec2_type; begin select col bulk collect into c from (select 121212121212121212129999 as col from dual union all select 221212121212121212121212121212 as col from dual); dbms_output.put_line(length(c(1))); select c1,c2 bulk collect into c2 from (select 1 as c1,'bbbb' as c2 from dual union all select 2 as c1,'dkkdk' as c2 from dual); -- dbms_output.put_line(length(c2(1))); -- fails -- dbms_output.put_line(length(rec)); -- fails dbms_output.put_line((length(rec.c1) + length(rec.c2))); -- works but a pain end; / seems like the only way to obtain the length is to add all the pieces. The adding is not bad on small records but large one is a bit of a pain. Any way which would use less code to do this? Thanks Ox -- //www.freelists.org/webpage/oracle-l