4.5 在游标中修改数据
一直到现在,我们对于直接在游标中修改数据的概念都比较敷衍。眼下,是时候了解在游标中对记录进行的更新和删除了。
由于这里是在处理特定的行而非行集数据,因此,需要某种专门的语法来告诉SQL Server我们想要进行更新。幸而在已经知道了如何执行UPDATE或DELETE的前提下,该语法实际上将是相当简单的。
本质上,我们将在游标底层的表中更新或删除数据。这里的操作与运行我们已熟悉的UPDATE和DELETE语句一样简单,只不过,眼下需要用一个匹配游标行的WHERE子句来进行限制。在DELETE或UPDATE语句中只加入一行语句即可:
WHERE CURRENT OF <游标名>
关于该语法没有什么需要特别讲述之处。不过,为了更完美,接下来我们使用这里的语法来执行一个游标。




同样,把这里的游标当作一个全新的游标来对待。我们已经完成了很多的删除、添加和更新,我想你会发现,比起不得不通过逐行浏览来找出可能缺失的事情,只是第二次使用键会更容易些。
另外,我们再次使用了在本书前面用过的取模运算符(%)。记得该运算符只返回余数。因此,如果任何数除以2的余数是零,那么我们将知道该数是偶数。
关于这里的具体细节,剩下的部分毫无难处可言,我们很快还能知道得到了一些结果:

可以看到多个“1 row affected”(1行受影响)的消息,这是针对所有受UPDATE和DELETE语句影响的行所返回的消息。当我们着手进行最后一个结果集的列举时,很快就能知道删除了所有的奇数数值(这是我们告诉代码去做的事情),并且,用新的CustomerID更新了偶数数值的行。
没有任何疑难之处——就是一个使用了WHERE CURRENT参数的WHERE子句而已。