Итак, у меня есть следующий код:
my $sql = "INSERT INTO mytbl (first_name, last_name, birthdate) VALUES (?, ?, ?)";
my $sth = $dbh->prepare($sql) or die "Error:".$dbh->errstr;
$sth->bind_param(1, $fname);
$sth->bind_param(2, $lname);
$sth->bind_param(3, $bdate);
$sth->execute() or die "Execution failed: " . $dbh->errstr;
$sth->finish();
При выполнении вставки в Microsoft SQL со следующими данными для даты рождения,
$ bdate = "2010-01-06"; Я должен привести его к функции datetime с SQL,
$bdate = "cast ('$eml_form_end_dt' as datetime)";
Это, однако, вызвало проблему, поскольку Perl не распознает ее. Вместо этого я должен был:
$bdate = "cast ('$eml_form_end_dt' as datetime)";
my $sql = "INSERT INTO mytbl (first_name, last_name, birthdate VALUES (?, ?, '$bdate')";
my $sth = $dbh->prepare($sql) or die "Error:".$dbh->errstr;
$sth->bind_param(1, $fname);
$sth->bind_param(2, $lname);
# This causes problem
# $sth->bind_param(3, "cast ('$eml_form_end_dt' as datetime)");
$sth->execute() or die "Execution failed: " . $dbh->errstr;
$sth->finish();
Как мне избежать функции SQL в этом случае?
РЕДАКТИРОВАТЬ: это сообщение об ошибке, которое я получил:
DBD :: ODBC :: st выполнить не удалось: [Microsoft] [Драйвер ODBC SQL Server] Недопустимая точность
по значению (SQL-HY104) в filename.pl.