Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan Kursor dalam Loop dari prosedur tersimpan

Anda dapat melakukan apa yang Anda inginkan dengan meletakkan kursor di BEGIN ... END memblokir. Lihat "Nesting MySQL Cursor Loops" milik Roland Bouman artikel untuk lebih jelasnya. Mungkin perlu diperhatikan bahwa komentarnya tentang teknik ini sering kali tidak diperlukan, karena seringkali mungkin untuk menulis ulang kueri daripada harus melakukan kursor bersarang.

Jika Anda masih perlu meletakkan kursor dalam satu lingkaran, kode Anda akan terlihat seperti ini:

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. Menginstal MySQL di CentOS 7

  2. Mengapa SQLSTATE[HY000]:Kesalahan umum?

  3. MySQL - Mengulang struktur pohon

  4. PDO:Koneksi basis data di situs web jarak jauh

  5. Apakah Diucapkan "S-Q-L" atau "Sekuel"?