/*********************************************************************/
/*  Datenbank-Praktikum                                              */
/*                                                                   */
/*  Datenbank Beispiel 1                                             */
/*                                                                   */
/*  Version 5.1                                                      */
/*                                                                   */
/*  Lieferant mit kleinstem Preis fuer jeden Artikel bestimmen       */
/*  und als Hauptlieferant eintragen                                 */
/*                                                                   */
/*  Da in MYSQL keine anonymen PL/SQL-Bloecke moeglich sind,         */
/*  wird eine Prozedur INIT_LNR erstellt und ausgefuehrt !           */
/*                                                                   */
/*  Mit DELIMETER kann das Begrenzungs-Zeichen festgelegt werden     */
/*********************************************************************/
drop procedure if exists init_LNR;
delimiter /
CREATE PROCEDURE init_LNR()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE Z_LNR INT;
  DECLARE Z_ANR CHAR(2);
  DECLARE Z_PREIS  FLOAT;
  DECLARE lesen CURSOR FOR select anr, Min(Preis) as mpreis from liefert group by anr;

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  
  OPEN lesen;

  REPEAT
    FETCH lesen INTO Z_ANR,Z_PREIS;

    select MIN(LNR) into Z_LNR from liefert where Preis = Z_PREIS and ANR = Z_ANR;
      
    update Artikel set lnr = Z_LNR where ANR = Z_ANR;
    commit;

  UNTIL done 
  END REPEAT;

  CLOSE lesen;
END;
/
delimiter ;
call init_LNR();
select ANR, Bezeichnung, Laenge, Breite, LNR from Artikel;
