PerlからNUMERIC(19,5)型のSQLServer2005データベース列に値を挿入しています。絶対値が.0001以上である限り、機能しています。ただし、値が小数点以下5桁になると、Perlは値を(-9e-05
ではなく-0.00009
)指数形式で格納し始め、SQLServerからエラー" Error converting data type varchar to numeric
"が発生します。それを防ぎ、小さな数値を適切に挿入するにはどうすればよいですか?
perl v5.8.5、DBI 1.56、DBD :: Sybase 1.07、およびSQLServer2005を使用しています。
コードはおおよそ次のとおりですが、無関係なフィールドを削除しました。
$invoice->{IL_UNITPRICE} = 0.09; # Actually comes from another database
$invoice->{IL_PRICEUNITCONV} = 0.001; # Actually comes from another database
$unitprice = $invoice->{IL_UNITPRICE} * -1 * $invoice->{IL_PRICEUNITCONV};
#$unitprice equals -9e-05 at this point.
$sth = $dbh->prepare('INSERT INTO foo ( bar ) VALUES ( ? )');
$sth->execute($unitprice);
上記の行はエラーで失敗します:DBD::Sybase::st execute failed: Server message number=8114 severity=16 state=5 line=2 server=baz text=Error converting data type varchar to numeric.