Toad World® Forums

tz_offset causes for loop to exit before all records processed in cursor.


#1

Toad: Ver 12.8.0.49

The below script exists without processing all the records in the cursor, loops through ok if the tz_offset is not called. Works ok in Toad 10.5.1.3 and plsql.

Loop is exited after only 3 records printed in 12.8.0.49

declare
cursor record is

select * from V$TIMEZONE_NAMES;
c varchar2(200);

begin
for r in record
loop
begin
c := tz_offset( r.tzname );
exception
when OTHERS then
dbms_output.put_line( ‘Exception’ );
end;
dbms_output.put_line( r.tzname || ’ ’ || c );
end loop;
end;


#2

The method of polling for dbms output has changed in recent versions for efficiency and the new method is grabbing the null char that TZ_OFFSET() has at the end of each TZNAME. The null char is a string terminator in Delphi (language Toad is written in) so we’re losing most of the data. Until it’s resolved you can strip the null by c := replace(tz_offset(r.tz_name), chr(0));

See… http://stackoverflow.com/questions/6201513/why-is-oracle-eating-my-string


#3

Fixed for next beta if you’re in the beta program.