﻿--- Action.pm	2011-11-03 14:49:23.226541730 -0400+++ Action.pm.20111103	2011-11-03 10:16:20.235620654 -0400@@ -166,23 +166,27 @@   my %params = validate(@_, {server_id => 1, transaction => 0});    my $dbh = $params{transaction} || RHN::DB->connect;-  my @results;-  my $query = <<EOQ;++  my $sth = $dbh->prepare(<<EOQ);+DECLARE++cursor pending_actions is SELECT A.id- FROM rhnAction A,-      rhnServerAction SA-  WHERE SA.server_id = :server_id+  FROM rhnAction A,+       rhnServerAction SA+ WHERE SA.server_id = :server_id    AND SA.status = 0+   AND SA.action_id = A.id    AND A.prerequisite IS NULL ORDER BY A.id;-EOQ -  my $sth = $dbh->prepare($query);-  $sth->execute_h(server_id => $params{server_id});+BEGIN -  while(@results = $sth->fetchrow()) {-    $dbh->call_procedure('rhn_server.remove_action', $params{server_id}, $results[0]);-  }+for action in pending_actions loop+  rhn_server.remove_action(:server_id, action.id);+end loop;+END;+EOQ    $sth->execute_h(server_id => $params{server_id}); @@ -194,6 +198,7 @@   } } + sub delete_set_from_action {   my $class = shift;   my $aid = shift;@@ -201,8 +206,13 @@   my $set_name = shift;    my $dbh = RHN::DB->connect;-  my @results;+++   my $query = <<EOQ;+DECLARE++cursor selected_servers is SELECT SA.server_id   FROM rhnServerAction SA, rhnSet ST  WHERE ST.user_id = :user_id@@ -210,13 +220,16 @@    AND ST.element = SA.server_id    AND SA.action_id = :action_id    AND SA.status = 0;++BEGIN+for server in selected_servers loop+  rhn_server.remove_action(server.server_id, :action_id);+end loop;+END; EOQ    my $sth = $dbh->prepare($query);   $sth->execute_h(action_id => $aid, user_id => $uid, label => $set_name);-  while(@results = $sth->fetchrow()) {-    $dbh->call_procedure('rhn_server.remove_action', $results[0], $aid);-  }   $dbh->commit; } @@ -227,8 +240,11 @@   my $set_name = shift;    my $dbh = RHN::DB->connect;-  my @results;+   my $query = <<EOQ;+DECLARE++cursor selected_actions is SELECT SA.action_id   FROM rhnSet ST, rhnServerAction SA  WHERE ST.user_id = :user_id@@ -236,16 +252,18 @@    AND SA.server_id = :server_id    AND ST.element = SA.action_id    AND SA.status = 0;++BEGIN+for action in selected_actions loop+  rhn_server.remove_action(:server_id, action.action_id);+end loop;+END; EOQ    my $sth = $dbh->prepare($query);   $sth->execute_h(server_id => $sid, user_id => $uid, label => $set_name);--  while(@results = $sth->fetchrow()) {-    $dbh->call_procedure('rhn_server.remove_action', $sid, $results[0]);-  }-   $dbh->commit;+ }  sub archive_actions {