Perl OLE32 MSSQL dateadd函数结果中的“游标类型已更改”错误

时间:2013-12-07 01:27:10

标签: sql-server perl sql-server-2008 ole

以下sql“选择DATEADD(day,DATEDIFF(day,2,GETDATE()),'20:00:00')作为”在Microsoft sql查询中运行完美。

然而在perl中,它抱怨以下错误“说明:[Microsoft] [ODBC SQL Server驱动程序]光标类型已更改”。

我仔细检查过,我的代码可以运行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驱动程序]光标类型已更改”。

小组可以提供的任何头脑风暴的想法都会受到赞赏。

我明白了,见下文

1 个答案:

答案 0 :(得分:0)

解决了它,原来这只是一个警告,sql server不知道将返回什么类型的游标,结果实际上是返回的。见http://social.msdn.microsoft.com/Forums/sqlserver/en-US/e15141e7-3084-487d-a60f-47afac046a55/odbcsql-cursor-error