我在SQL Server Management Studio 2012中运行涉及游标的脚本。该脚本将逐行遍历数据库表,并将数据组合到插入第二个数据库表的单个行中。我相信光标是解决这个问题的最好方法。
我有一个似乎与我的代码无关的问题,因为当它发生时,我唯一的解决方案是简单地重新执行代码,并且错误不会再次发生。
我已将错误指向以下内容:
FETCH NEXT FROM @theCursor INTO @variable, @anotherVariable, @etc...
将发生以下错误
无法完成游标操作,因为自声明游标后设置选项已更改。
同样,极其令人困惑的问题是,如果我在收到此错误后重新运行脚本,则不会发生这种情况。我在数据库上创建了一个新查询,每次我都会收到错误。然后我重新运行脚本,每次都 。
另一个奇怪的事情是错误只会在FETCH
行被执行大约五次之后才会发生!
我已尝试捕获错误并只是重新调用整个过程,但错误仍在继续。我所知道的唯一解决方案是通过SQL Server' Execute'再次运行脚本。命令(键盘上的F5)。
我知道这里没有太多事情要做。我自己没有太多具体细节。
答案 0 :(得分:0)
所以,事实证明我不知道什么类型的东西可以被视为'SET选项',以及它们可能产生的影响。
在我的脚本中,我使用 dateformat 来处理数据库表中的一些不一致数据。它是这样的:
set dateformat mdy
/* Do some DATETIME stuff with current format... */
set dateformat ymd
// ...
set dateformat dmy
// ...
set dateformat ymd
// ...
解决方案是不要像上面那样将 dateformat 保留为ymd。只需在我所有日期格式的末尾添加set dateformat mdy
,就可以防止错误发生。奇怪的是,以set dateformat dmy
结束不起作用,但set dateformat mdy
会起作用。