On Wed, Jun 29, 2011 at 09:02:27AM +0100, Martin J. Evans wrote: > On 24/06/11 16:17, David Nicol wrote: > > 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. > > Does this mean DBD::ODBC has a bug? > > If so, and as I said before, I don't think DBD::ODBC knows the difference > between a fetch called as part of selectall_* or a fetch called directly and > the only way out would be to report no errors in fetch at all if the > statement is not active. > > AV *dbd_st_fetch(SV *sth, imp_sth_t *imp_sth) > {
> /* Check that execute() was executed sucessfully. This also implies > */ > /* that dbd_describe() executed sucessfuly so the memory buffers */ > /* are allocated and bound. > */ > if ( !DBIc_ACTIVE(imp_sth) ) { > dbd_error(sth, DBDODBC_INTERNAL_ERROR, "no select statement currently > executing"); > return Nullav; > } Perhaps a reasonable approach would be to downgrade that to a warning. set_err_char(SvRV(DBIc_MY_H(imp_sth)), (imp_xxh_t*)imp_sth, "0", 0, "no select statement currently executing", "", "fetch"); Tim.