[EMAIL PROTECTED] [[EMAIL PROTECTED]] wrote:
>
> The script I'm using is basically this ....
>
> $dbname = "dbi:Sybase:server=$ENV{SYBASE_DB_SERVER};".
> "database=$ENV{SYBASE_DB_NAME}";
> .
> .
>
> my $dbh=DBI->connect($dbname,$username,$password,
> { RaiseError => 1, AutoCommit => 1})
> or die "Couldn't connect to database: " . DBI->errstr;
>
> my $selsql = "select count(*) from $table";
$dbh->trace(2); can be pretty helpful to see what sql is actually
being sent to the database - are you sure that $selsql contains
what you expect? I usually put
$dbh->trace(2);
above my "prepare" and "execute" of the sql in question, and then
put a
$dbh->trace(0);
after.
Seems to me $table may need single quotes around it - I think
that will make it ok if $table contains a tablename that has
spaces in it. Try putting single quotes around $table, like
my $selsql = "select count(*) from '$table'";
>
> I have tried both of the following:
>
> my $count = $dbh->do($selsql); # returns -1
I think(?) the DBI perldocs point out that you can't use "do"
with a SELECT. I'm not entirely sure about this, and I don't
have time to check the docs.
>
>
> my $count = $dbh->selectrow_array($selsql); #returns 0
I'm not familiar with selectrow_array - for SELECT's, I always
do "prepare" and "execute" and some form of "fetch". I can't
be much help here, but try the "trace" stuff I mentioned above.
> I have a similar version of this running against a DB2 database and it
> works fine.
Different database drivers treat some thing differently.
HTH.
--
Hardy Merrill
Senior Software Engineer
Red Hat, Inc.