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

时间:2014-01-06 15:38:00

标签: stored-procedures cursor db2 resultset

我编写了一个存储过程,其中包含许多表上的SELECT,这些表应用逻辑来计算值并转换某些数据。

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

我需要删除同一存储过程中的记录,我希望避免重复逻辑,通过使用一些逻辑来查找要包含的记录并再次重复一些逻辑以便能够找到记录到排除。我能想到的唯一另一种选择是使用临时表,但我认为我应该做的事情应该是可能的。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

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

DELETE WHERE CURRENT OF cursorname;

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