我的代码的目标是根据一个特定参数返回表中行数的计数。
这是有效的代码:
######### SQL Commands
### Connect to the SQL Database
my $dbh = DBI->connect($data_source, $user, $pass)
or die "Can't connect to $data_source: $DBI::errstr";
### Prepare the SQL statement and execute
my $sth1 = $dbh->selectrow_array("select count(*) from TableInfo where Type = '2'")
or die "Can't connect to $data_source: $DBI::errstr";
### Disconnect from Database statements are completed.
$dbh->disconnect;
######### end SQL Commands
print $sth1;
这将成功打印一个数字,在这种情况下为 189。当我尝试使用相同的代码但更改“Type = '2'”(应返回值 2000)时,我收到以下错误:
DBD::ODBC::db selectrow_array failed: [Microsoft][ODBC Driver 11 for SQL Server]Numeric value out of range (SQL-22003) at ./getTotalExpSRP.cgi line 33, <DATA> line 225.
Can't connect to dbi:ODBC:BLTSS_SRP: [Microsoft][ODBC Driver 11 for SQL Server]Numeric value out of range (SQL-22003) at ./getTotalExpSRP.cgi line 33, <DATA> line 225.
我到处搜索,但我不知道为什么会发生这种情况。从问题的症状来看,我猜想返回的结果的大小是有限制的,但我找不到任何支持证据。
我已经在我的 Microsoft SQL 2005 服务器上运行了跟踪,并且可以确认 sql 语句正在正确运行且没有错误。
我查看了我的 odbc 跟踪日志,但不幸的是,在将工作示例与失败示例进行比较时,我无法得出任何有用的信息。
任何帮助,将不胜感激!!
谢谢,