私のコードの目標は、1 つの特定のパラメーターに基づいて、テーブル内の行数のカウントを返すことです。
動作するコードは次のとおりです。
######### 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 トレース ログを確認しましたが、残念ながら、実際の例と失敗した例を比較しても、有用な情報を得ることができません。
どんな助けでも大歓迎です!!
ありがとう、