我已经编写了一个存储过程,其中包括对许多表的SELECT,这些表应用逻辑来计算值并转换一些数据。
有人问我是否可以从存储过程的结果集中排除记录,并将记录写到单独的日志表中。我希望遍历SELECT语句的结果集,并在将记录写入表后删除要排除的记录。目前,我正在努力寻找要从存储过程中的SELECT语句的结果集中删除的语法,并且只能找到如何使用游标引用从原始数据库表中删除。
我需要删除同一存储过程中的记录,我希望通过使用一些逻辑来查找要包括的记录,并再次重复一些逻辑,以便能够找到要排除的记录,从而避免重复逻辑。我能想到的唯一替代方法是使用临时表,但我认为我正在尝试做的事情应该是可能的。
感谢您的帮助。
发布于 2014-01-07 09:05:17
在存储过程(或应用程序)中具有打开的游标时,可以执行定位删除。您可以执行以下语句,
DELETE WHERE CURRENT OF cursorname;请注意,在缺省情况下,发出COMMIT语句将关闭所有打开的游标,因此,如果您计划将此delete操作分散到多个事务中,则需要使用WITH HOLD声明游标。
https://stackoverflow.com/questions/20953451
复制相似问题