Re: Query returns -1 if row present (DBI, SQL Server 2000)
- From: "J. Gleixner" <glex_no-spam@xxxxxxxxxxxxxxxxxxxxx>
- Date: Mon, 29 Oct 2007 14:35:40 -0500
int eighty wrote:
Hello,
I am using the DBI module to interface with a SQL Server 2000 database
-- connection, INSERT, UPDATE, and SELECT (when 0 rows exist in
resultset) are fine. However, if the resultset contains a row, a
value of -1 is returned. The query is very simple:
my $sth = $dbh->prepare(q{SELECT TOP 1 id FROM host WHERE ip = ?});
$sth->execute($ip);
print "Looked up $ip: " . $sth->rows . " ($DBI::errstr)\n";
if ($sth->rows == 0) {
# do something
}
elsif ($sth->rows > 0) {
# do something else
}
else {
# error
}
I do not believe this to is a permission problem with SQL Server as
the initial SELECT runs and jumps properly when $sth->rows is 0.
However the code always ends up in the else block if a row is returned
from the initial SELECT. The SELECT query also runs fine in Query
Analyzer when entered manually. Oh, it may also be worth mentioning
that $DBI::errstr is empty after the execute call for the initial
SELECT query.
Possibly, reading the documentation will help.
"Returns the number of rows affected by the last row affecting command,
or -1 if the number of rows is not known or not available. "
[ continue reading docs for more information.]
.
- Follow-Ups:
- Re: Query returns -1 if row present (DBI, SQL Server 2000)
- From: int eighty
- Re: Query returns -1 if row present (DBI, SQL Server 2000)
- References:
- Query returns -1 if row present (DBI, SQL Server 2000)
- From: int eighty
- Query returns -1 if row present (DBI, SQL Server 2000)
- Prev by Date: Query returns -1 if row present (DBI, SQL Server 2000)
- Next by Date: Re: Problem getting command output
- Previous by thread: Query returns -1 if row present (DBI, SQL Server 2000)
- Next by thread: Re: Query returns -1 if row present (DBI, SQL Server 2000)
- Index(es):
Relevant Pages
|