Hi Shaunn.

Shaunn Johnson wrote:
> Howdy:
>
> First off, many thanks to all (esp. R. Dixon and T. Lowery)
> for the help with the 'using table_info()' thread.
>
> I'm just about done with that script, but I have
> one tiny problem.
>
> In my SECOND while loop, I place a comma (,) at the end
> so that when the *.ddl files are built, it looks
> just like I've done it by hand.  And close to the
> way I want to use the scripts for porting to Oracle.
> Almost.
>
> I have one comma too many and I would like to know
> how can I either:
>
> 1) go back over the files AFTER they're done and
> remove the very last comma in the file
>
> 2) set up the loop statement so that I only put
> commas on all of the columns except for the last row
> of data.
>
> Are either of these possible?
>
> I am including the script in case anyone is interested
> in how it's set up.  Yes, I know it could be shorter
> and much, much cleaner  - please feel free to muck
> with it and pass on hints to making it better.

[snip bulk of script]

I think it's this comma you're talking about?

> while ( my($first, $second)=$sth->fetchrow ) {
>   print FILE "$first\t\t$second,\n";
> }

Firstly, I'm surprised the 'fetchrow' method still works
with 'DBI'. What I would normally call here is
'fetchrow_array' which returns a list, regardless of
context. Anyway, the answer...

The classical solution is to print a comma /before/
each record unless it is the first record. This is
often easier because checking for the first item
is usually easier than checking for the last. In this
case though, the most straightforward way is to count
the number of rows you've printed and compare it with
$sth->rows to see if it needs terminating. Like this

  my $row = 0;
  while ( my($first, $second) = $sth->fetchrow ) {
    print FILE "$first\t\t$second";
    print "," unless ++$row >= $sth->rows;
    print "\n";
  }

HTH,

Rob




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to