Perl OLE32 MSSQL dateadd 函数结果上的“光标类型已更改”错误
Posted
技术标签:
【中文标题】Perl OLE32 MSSQL dateadd 函数结果上的“光标类型已更改”错误【英文标题】:"Cursor type changed" error on Perl OLE32 MSSQL dateadd function results 【发布时间】:2013-12-07 01:27:09 【问题描述】:以下 sql "select DATEADD(day, DATEDIFF(day, 2, GETDATE()), '20:00:00') as A" 在 Microsoft sql 查询中运行良好。
但是在 perl 中,它会报错“描述:[Microsoft][ODBC SQL Server Driver]Cursor type changed”。
我仔细检查了一下,我的代码可以毫无问题地运行 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 Driver]光标类型已更改”。
如果小组可以提供任何头脑风暴的想法,我们将不胜感激。
我想通了,见下文
【问题讨论】:
【参考方案1】:解决了,原来这只是一个警告,sql server 不知道会返回什么类型的游标,结果实际上是返回的。见http://social.msdn.microsoft.com/Forums/sqlserver/en-US/e15141e7-3084-487d-a60f-47afac046a55/odbcsql-cursor-error
【讨论】:
以上是关于Perl OLE32 MSSQL dateadd 函数结果上的“光标类型已更改”错误的主要内容,如果未能解决你的问题,请参考以下文章
win32client dispatch在python中失败,而win32 :: ole new在perl中成功运行for com dll