我编写了一个存储过程,其中包括对多个表的SELECT,该表应用逻辑计算值并转换一些数据。
有人问我是否可以从存储过程的结果集中排除记录,并将该记录写入一个单独的日志表。我希望循环使用SELECT语句的结果集,并在将要排除的记录写入表后删除该记录。目前,我正在努力从存储过程中的SELECT语句的结果集中找到要删除的语法,只能找到如何使用游标引用从原始数据库表中删除。
我需要删除同一存储过程中的记录,并且我希望通过使用一些逻辑来查找要包括的记录,并再次重复一些逻辑以能够查找要排除的记录,从而避免重复逻辑。我唯一能想到的另一种选择是使用临时桌子,但我认为我想做的应该是可能的。
感谢您的帮助。
当存储过程(或应用程序)中有一个打开的光标时,可以执行定位删除。您可以执行该语句,
DELETE WHERE CURRENT OF cursorname;
请注意,默认情况下,发出COMMIT
语句将关闭任何打开的游标,因此,如果您计划在多个事务中执行此删除操作,则需要使用WITH HOLD
声明游标。