请教:关于win32::odbc的一个疑问

请教:关于win32::odbc的一个疑问
各位老大,我的数据库里有几百条记录,我想通过$db->FetchRow()逐条筛选,然后对记录进行update,可是循环确无法执行,只能执行第一条语句。请问是为什么啊?
简单代码如下:

use strict;
use Win32::ODBC;
my $DEBUG=1;
my($db) = new Win32::ODBC("dsn=MyDB; uid=sa; pwd=admin") or die "Can't Create db: $!\n";


my $CmdQuery="Select * from tbl_data";
if ($db->Sql($CmdQuery)){
print "$CmdQuery failed.\n";
print "Error: " . $db->Error() . "\n";
$db->Close();
exit;
}

while ($db->FetchRow()) {

my(%tbldata) = $db->DataHash();
my $SQLcmd="update tbl_data set data1=$tbl{data1} where data2=$tbl{data2};

$db->Sql($SQLcmd);

print "At while bottom\n";
}