I am using DBI and DBD-ODBC to connect to an MSSQL Server and this query
gets an invalid cursor state:

PRINT 'starting select'
select count(*) from anytable
PRINT 'finished'

If I only run the PRINT command... it works.

If I run the full query against a sybase server... only the top select
prints. 

I am using:

Win32 AS-5.8.0 Multithread build 806 DBI(1.43)DBD::ODBC(1.07) MSSQL Server I
get a invalid cursor state when I run any SQL with a PRINT statement at the
beginning of any SQL statement. 

The error:
DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Invalid
cursor state (SQL-24000)(DB
D: dbd_describe/SQLNumResultCols err=-1) at H:\progs\dbi_test.pl line 10.


Example code: 
#c:/perl/bin/perl

use DBI;

my $dbh = DBI->connect( 'dbi:ODBC:TEST_DSN', '','', {RaiseError=> 1} );

my $sql = qq#
PRINT 'starting select'
select count(*) from anytable
PRINT 'finished'
#;

my $sth = $dbh->prepare( $sql );

my $rv = $sth->execute();

while ( my $hr = $sth->fetchrow_hashref ){

    print $$hr{$_}, "\n" for ( keys %$hr );
    print "Err: ", $dbh->errstr, "\n" if $dbh->errstr;

}



Does this have anything to do with how SQL_SUCCESS_WITH_INFO is being
handled by the driver?

How do I get all the results..

Thanks!

James

Reply via email to