在下面的Perl腳本使用SQL Server 2008我得到的和無效的精度值誤差:SQL Server的精度無效存在檢查查詢
use DBI;
$idx = '12345';
$query = 'if exists (select * from tbl where idx = ?) select top 10 * from tbl';
my $h = $dbh->prepare($query) or die "Couldn't prepare query: " . $dbh->errstr;
$h->execute($idx) or die "Couldn't execute statement: " . $h->errstr;
不過請注意,如果我試試這個,而不是
use DBI;
$query = 'if exists (select * from tbl where idx = \'12345\') select top 10 * from tbl';
my $h = $dbh->prepare($query) or die "Couldn't prepare query: " . $dbh->errstr;
$h->execute() or die "Couldn't execute statement: " . $h->errstr;
然後它工作。我真的很困惑如何?在查詢中可能會導致無效的精度錯誤。
感謝任何人都可以提供的幫助。
tbl中idx的數據類型是什麼? – 2010-08-11 17:05:26
你能顯示錯誤嗎? – Axeman 2010-08-11 17:56:51
idx是一個varchar。錯誤的確切文本是 [Microsoft] [ODBC SQL Server驅動程序] [無效的精度值(SQL-HY104)在filename.pl ... – 2010-08-11 18:12:44