in reply to dbi style questions (code, discussion)

I do a lot of DBI programming on a daily basis and I still haven't come up with something I am 100% happy with. Most of the SQL statements I use are long multiline ones, which I like the form:
my $sth = $dbh->prepare(q{ SELECT x, y, z FROM table1, table2 WHERE x = ?, y = ? ORDER BY z });
I think making the SQL commands uppercase helps them stand out from the code a bit better. If it's a shorter statment I try to squeeze it on to one line. I also use prepared statements for most everything, apart from 1 shot updates, deletes etc.
$dbh->do('delete from temp where x = ?', undef, $x);
According to the DBI docs, using bind_columns is the way to go, it means you can write code like:
$sth->execute; $sth->bind_column(\$res); $sth->fetch;
$res would be undef if there was an error.

Another alternative is:

$sth->execute; unless (@cols = $sth->fetchrow_array) { # error }
Hope this gives you a few ideas.

Replies are listed 'Best First'.
Re: Re: dbi style questions (code, discussion)
by gav^ (Curate) on Dec 29, 2001 at 20:38 UTC
    Dammit, forgot to log on. Doh!