On Wed, Jun 29, 2011 at 3:02 AM, Martin J. Evans <martin.ev...@easysoft.com> wrote:
>> BEGIN THING TO INSERT >> =head3 On use of non-C<SELECT> SQL in C<select*_*> methods >> >> When you really don't know if the statement you have in a >> variable is going >> to be a C<SELECT> or not, unrolling the process into >> C<prepare>,C<execute>, and >> a C<fetch*> called within an C<eval> block will work. >> END THING TO INSERT > > Unfortunately this does not hold true for DBD::ODBC: How to emphasize "called within an C<eval> block" ??? > perl -le 'use DBI; my $h = DBI->connect(); my $s = $h->prepare("create table > fred (a int)"); $s->execute; my $r = $s->fetch;' > DBD::ODBC::st fetch failed: no select statement currently executing > (SQL-HY000) at -e line 1. Right, right! What happens when you put an C<eval> around the fetch? perl -le 'use DBI; my $h = DBI->connect(); my $s = $h->prepare("create table fred (a int)"); $s->execute; my $r = eval {$s->fetch};' That is, are there any drivers where calling a bogus fetch WITHIN AN EVAL BLOCK has any side effects? Error counters that max out, or anything like that?