Stored procedures db2从存储过程中的结果集中删除

Stored procedures db2从存储过程中的结果集中删除,stored-procedures,cursor,db2,resultset,Stored Procedures,Cursor,Db2,Resultset,我编写了一个存储过程,其中包括对多个表进行选择,该表应用逻辑计算值并转换一些数据 有人问我是否可以从存储过程的结果集中排除记录,并将记录写入单独的日志表。我希望循环使用SELECT语句中的结果集,并在将其写入表后删除要排除的记录。目前,我正在努力找到要从存储过程中的SELECT语句的结果集中删除的语法,并且只能找到如何使用游标引用从原始数据库表中删除 我需要删除同一存储过程中的记录,我希望通过使用某些逻辑来查找要包含的记录,并再次重复某些逻辑来查找要排除的记录,从而避免重复逻辑。我能想到的唯一其

我编写了一个存储过程,其中包括对多个表进行选择,该表应用逻辑计算值并转换一些数据

有人问我是否可以从存储过程的结果集中排除记录,并将记录写入单独的日志表。我希望循环使用SELECT语句中的结果集,并在将其写入表后删除要排除的记录。目前,我正在努力找到要从存储过程中的SELECT语句的结果集中删除的语法,并且只能找到如何使用游标引用从原始数据库表中删除

我需要删除同一存储过程中的记录,我希望通过使用某些逻辑来查找要包含的记录,并再次重复某些逻辑来查找要排除的记录,从而避免重复逻辑。我能想到的唯一其他选择是使用临时表,但我认为我正在尝试的应该是可能的


非常感谢您的帮助。

当存储过程(或应用程序)中有一个打开的游标时,您可以执行定位删除。您可以执行该语句

DELETE WHERE CURRENT OF cursorname;

请注意,默认情况下,发出
COMMIT
语句将关闭所有打开的游标,因此,如果您计划将此删除操作分散到多个事务中,则需要使用
WITH HOLD

声明游标。谢谢您的帮助,但我在语法方面遇到了问题。我使用的是DataStudio,它在“OF”下面划线是一个错误。我正在使用的代码示例是start_loop:loop,如果SQLCODE=0,则将cursor1提取到v_id中;删除游标1的当前位置;否则离开启动循环;如果结束;结束循环开始循环;