sql-server - sql 2008游标与sql2000的区别?

标签 sql-server

以下代码在sql2008和sql2000上的运行方式存在差异。在sql 2000中,结果是正确的(从第一行到最后一行的提取是正常的),而在sql 2008中,提取显示出奇怪的行为(从最后插入的行开始直到第一行。下面是问题的代码其中“区域”是任何表格:

create trigger tr on area for insert as
    declare @id int
    select @id = id from inserted
    print 'trigger: ' + convert(varchar(50), @id)

    declare c cursor scroll for select id from inserted order by id
open c
fetch next from c into @id
while @@FETCH_STATUS = 0
begin
    print 'cursor id: ' + convert(varchar(50), @id)
    fetch next from c into @id
end
close c
deallocate c

下面是 sql 2008 中的结果:

trigger: 1828
cursor id: 1837
cursor id: 1836
cursor id: 1835
cursor id: 1834
cursor id: 1833
cursor id: 1832
cursor id: 1831
cursor id: 1830
cursor id: 1829
cursor id: 1828

sql 2000 中显示的结果是:

trigger: 1837
cursor id: 1828
cursor id: 1829
cursor id: 1830
cursor id: 1831
cursor id: 1832
cursor id: 1833
cursor id: 1834
cursor id: 1835
cursor id: 1836
cursor id: 1837

最佳答案

如果你在SQL2008中使用游标,它会从最后到第一个。你是对的,SQL改变了它的选择规则。一般来说,像这样使用光标会更好。使用 OrderBy。

关于sql-server - sql 2008游标与sql2000的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161019/

相关文章:

c# - 如何更新本地 SQL Server 数据库中的值

sql - 拆分列中的字符串并在 sql 中进行透视

c# - 如何在一个元素(Gridview)上绑定(bind)多个数据?

sql - 是否应该为 SQL Server 2005 中的存储过程授予 CONTROL 权限?

sql-server - 在 SQL Server 中使用 RAISERROR 引发自定义错误消息

c# - 通过组合框选择数据库

c# - 调用 DataAdapter 填充的 ASP.NET 会创建重复条目

sql-server - SQLSRV 未显示在 PHP INFO 中

c# - 如何在 C# .net 中管理图书馆管理系统中的学生和图书发行关系?

SQL Server : is this a bug or do I have a misunderstanding?