Perl OLE32 MSSQL dateadd 函数结果出现“光标类型已更改”错误

2024-06-22

以下 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 驱动程序]游标类型已更改”。

该小组可以提供的任何集思广益的想法将不胜感激。

我已经弄清楚了,请看下面


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl OLE32 MSSQL dateadd 函数结果出现“光标类型已更改”错误 的相关文章

  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • 工厂模式数据库连接

    我正在尝试使用 MySQL 实现数据库连接上的工厂模式 SQL Server 面临奇怪的错误 你调用的对象是空的 在 SQL 命令对象上 internal class SqlServerDB IDatabase private SqlCon
  • 如何在 Perl 中找到普通文本和 JSON 编码文本之间的差异?

    我用过JSON 任意 http search cpan org dist JSON Any在我的程序中在客户端和服务器之间传输哈希值 我遇到一个问题 我想知道文本 客户端发送的 是普通文本还是 JSON 编码文本 谁能告诉我如何找到 未经检
  • 没有 DateAdd() 的 SSIS 表达式前一个日期

    目前正在开发一个包 它将表达式从先前的日期传递到文件名 我当前的代码如下作为字符串变量 DT WSTR 20 DATEPART YYYY Dateadd DD 1 dateadd MM datediff MM DT DATE 1900 01
  • 获取SQL中前2个特殊字符之间的字符

    我有数据在sql 只是要注意 SQL STudio is the IDE like data a 10 b c a 1 b c 我想获取前两个符号之间的数据 Output 10 1 这就是我的方法 SELECT CAST
  • 如何引用 Perl 子例程?

    我在弄清楚如何引用外部模块文件中的子例程时遇到了一些麻烦 现在 我正在这样做 外部文件 package settingsGeneral sub printScreen print 0 Main use settingsGeneral my
  • 连接多个表中的多行

    我已经评论过many https stackoverflow com questions 273238 how to use group by to concatenate strings in sql server other https
  • 如何在插入后获取插入的行 ID 以及相关数据而不插入相关数据

    我有一组数据需要在表中产生新行 创建此行后 我需要将元数据附加到与此信息相关的单独表中 那就是我需要创建我的 Identity 首先 得到GlobalId从行返回 然后附加 Accounts and Metadata to it 插入数据并
  • 为什么会出现使用警告;使用严格; Perl 中不是默认的吗?

    我想知道为什么 use warnings use strict Perl 中不是默认的 每个脚本都需要它们 如果有人 出于充分的理由 需要禁用它们 他们应该使用no strict和 或应该使用一些命令行参数 对于单行代码 是否有太多写得很糟
  • Perl - Win32 - 如何从另一个进程非阻塞读取文件句柄?

    我正在编写一些通过 STDIN 与客户端进程通信的服务器代码 我正在尝试编写一段 Perl 代码 用于异步接收来自客户端 STDOUT 的响应 代码的阻塞版本可能如下所示 sub read from client my file handl
  • 主键和代理键有什么区别?

    我用谷歌搜索了很多 但没有找到带有示例的确切直接答案 任何例子都会更有帮助 主键是表中的唯一键 您选择它可以最好地唯一标识表中的记录 所有表都应该有一个主键 因为如果您需要更新或删除一条记录 您需要知道如何唯一标识它 代理键是人工生成的键
  • Sql Server 2008 强制日期从 dd/MM/yyyy 到 MM/dd/yyyy

    我在 sql server 2008 上遇到了一个奇怪的问题 我试图用dd MM yyyy格式写入sql server 2008 但是插入日期后它会自动转换为MM dd yyyy 注意 我的电脑时钟格式是dd MM yyyy 我的报告查看器
  • 数据流任务的 Foreach 循环容器

    我想从 Oracle DB 导入近 1200 万条记录 但由于 SSIS 内存缓冲区问题 我需要每年迭代我的数据流任务 即 2005 年到 2012 年 7 次 我如何使用 foreach 我的 oracle 查询来获取每年的数据 Quer
  • sp_MSforeachtable 在每个表上执行过程

    我想打印一些动态查询来对数据库中的所有表执行过程 这是我到目前为止所写的 EXEC SP MSFOREACHTABLE IF EXISTS SELECT FROM INFORMATION SCHEMA COLUMNS WHERE COLUM
  • 如何在 Perl CGI 程序中进行分页和排序?

    这是我从 SQLite 数据库检索数据的表 它有很多记录 所以在 添加 按钮附近我需要类似的东西 lt lt gt gt 每当我点击时 它就会执行分页功能 另外 除了表每个标头 例如 UserName UserId 之外 我还需要排序 按钮
  • 如何处理 FOR XML PATH/AUTO 中的空白值 - SQL Server?

    有没有人对这种 SQL Server 行为有任何见解或遇到过 当空白值转换为数据类型时 char 或具有 的列char 作为数据类型 处理使用For XML PATH 它返回 XML 结果 20 空格的特殊字符编码 当相同的空白值转换为va
  • 是否有一个sql条件可以查找列中的非整数?

    基本上我想要一个像这样运行的 select 语句 SELECT FROM table WHERE column IS NOT INT 是否存在这样的条件或者如何检查 nvarchar 10 列中的非整数 In SQL Server你可以做
  • PowerShell:带有 Get-Credential 的 invoke-sqlcmd 不起作用

    我从未见过如此简单的脚本会如此失败 SQLServer localhost cred Get Credential invoke sqlcmd ServerInstance SQLServer Credential cred Query s
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • SQL查询多个数据库

    我需要运行一个SELECT在 SQL Server 上查询并返回从同一服务器上的多个数据库中提取的信息 我有以下内容 可以工作 SELECT Name Nationality FROM dbtest dbo Staff WHERE Nati

随机推荐