以下 sql“select DATEADD(day, DATEDIFF(day, 2, GETDATE()), '20:00:00') as A”在 Microsoft sql 查询中运行得非常好。
然而在 perl 中,它抱怨以下错误“描述:[Microsoft][ODBC SQL Server Driver]游标类型已更改”。
我仔细检查过,我的代码可以毫无问题地运行 select 和 update 语句,所以我对光标错误有点困惑。
请注意,我没有包含连接字符串,但已说明我正在使用 win32::OLE。
use Win32::OLE;
$conn->{ConnectionString} = "...";
$conn->open; # open connection to the DB
$state = $conn ->state; #1 means connected
if($state ne "1"){...
$mssql_select = "select DATEADD(day, DATEDIFF(day, 2, GETDATE()), '20:00:00')
as A";
$rs->Open( $mssql_select, $conn);
my $error_collection = $conn->Errors();
my $ecount = $error_collection->Count;
my ($is_message, $real_error_found);
foreach my $error (in $error_collection)
{
#output error statements
$is_message = ($error->{SQLState} eq "01000" && $error->{NativeError}==0);
$real_error_found=1 unless $is_message;
$status = "ERROR # " . $error->{Number}
. "\n Description: " . $error->{Description}
. "\nSource: " . $error->{Source} . "\n";
}
结果为“描述:[Microsoft][ODBC SQL Server 驱动程序]游标类型已更改”。
该小组可以提供的任何集思广益的想法将不胜感激。
我已经弄清楚了,请看下面