On 11-Sep-2003 Jenda Krynicky wrote:
> From: "Martin J. Evans" <[EMAIL PROTECTED]>
>> I haven't tried it in a long time (other than running make test) but
>> from perldoc DBD::ODBC:
>> 
>>        odbc_async_exec
>>            Allow asynchronous execution of queries.  Right now,
>>            this causes a spin-loop (with a small "sleep") until
>>            the sql is complete.  This is useful, however, if you
>>            want the error handling and asynchronous messages (see the
>>            err_handler) below.  See t/20SQLServer.t for an example of
>>            this.
> 
> Sweeeeet. It works:
> 
> use DBI;
> 
> my $text = '';
> 
> my $dbh = DBI->connect('dbi:ODBC:jobodbc2', 'TMPJOBVIPERADMIN', 
> 'jobviper',
>       {PrintError => 0,RaiseError => 1,LongReadLen => 65536,
>       odbc_async_exec => 1,
>       odbc_err_handler => sub {
>                       my ($state, $msg) = @_;
>                       # Strip out all of the driver ID stuff
>                       $msg =~ s/^(\[[\w\s]*\])+//;
>                       $text .= $msg."\n";
>                       return 0;
>               }
>       });
> 
> $sth = $dbh->prepare("dbcc CHECKDB ('jobviper')");
> $sth->execute;
> 
> print $text;
> 
> $dbh->disconnect();
> 
> 
> It seems that the ->prepare() and ->execute() is necessary, it 
> doesn't work with ->do().

It won't work with do() because do is for non-result-set generating SQL like
inserts etc and doesn't do the asynchronous stuff . Glad you have it working OK
though.

Martin
-- 
Martin J. Evans
Easysoft Ltd, UK
Development

Reply via email to