# Procedura wyszukująca identyfikator zamówienia o największej wartości.
# Może być to zrealizowane za pomocą funkcji max, ale procedura ma ilustrować
# zasady działania procedur składowanych.
delimiter //

CREATE PROCEDURE Najwieksze_zamowienie (OUT Id_najwiekszego INT) 
BEGIN
  DECLARE Biez_id INT;
  DECLARE Biez_suma FLOAT;
  DECLARE N_suma FLOAT DEFAULT 0.0;
  DECLARE N_id INT;

  DECLARE Gotowe INT default 0;
  DECLARE C1 CURSOR FOR SELECT ZamowienieID, Wartosc FROM Zamowienia;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Gotowe = 1;

  OPEN C1;
  REPEAT
    FETCH C1 INTO Biez_id, Biez_suma;
    IF NOT Gotowe THEN
      IF Biez_suma > N_suma THEN
        SET N_suma=Biez_suma;
        SET N_id=Biez_id;
      END IF;
    END IF;
  UNTIL Gotowe END REPEAT;
  CLOSE C1;

  SET Id_najwiekszego=N_id;
END
//

DELIMITER ;
