Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie kursora w pętli procedury składowanej

Możesz robić, co chcesz, zagnieżdżając kursor w BEGIN ... END blok. Zobacz Roland Bouman „Zagnieżdżanie pętli kursora MySQL” artykuł po więcej szczegółów. Warto zauważyć, że jego komentarze na temat tej techniki są często niepotrzebne, ponieważ często możliwe jest przepisanie zapytania zamiast konieczności wykonywania zagnieżdżonego kursora.

Jeśli nadal będziesz musiał zagnieździć kursor w pętli, Twój kod powinien wyglądać mniej więcej tak:

increment: LOOP
    block_cursor: BEGIN
        DECLARE cur1 CURSOR FOR SELECT person_id, publication_id  FROM p_publication WHERE person_id = new_count;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
        OPEN cur1;
        REPEAT
            FETCH cur1 INTO pub_id, per_id;
            IF NOT done THEN
                INSERT INTO test.t2 VALUES (pub_id, per_id);
            END IF;
            SET new_count = new_count + 1;
        UNTIL done END REPEAT;
        CLOSE cur1;
        IF !(new_count < old_count ) THEN
            LEAVE increment;
        END IF;
    END block_cursor;
END LOOP increment;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aplikacja Xamarin dla systemu Android z internetową bazą danych MySql/Sql

  2. mysql w xampp uruchamia się i zatrzymuje za pięć sekund

  3. Hierarchiczne tagowanie w SQL

  4. Mysql Połącz dwie kolumny podczas wyszukiwania za pomocą LIKE

  5. INSERT i UPDATE w jednym zapytaniu MYSQL