Cara Menggelung Melalui Baris dalam Jadual MySQL: Prosedur lwn Kursor?

DDD
Lepaskan: 2024-11-12 14:21:02
asal
911 orang telah melayarinya

How to Loop Through Rows in a MySQL Table: Procedures vs. Cursors?

Gelung Melalui Baris dalam Jadual MySQL

Dalam MySQL, gelung melalui baris jadual boleh dicapai menggunakan prosedur atau berasaskan kursor pendekatan. Artikel ini meneroka kedua-dua kaedah berdasarkan senario tertentu yang melibatkan penyalinan data daripada Jadual A ke Jadual B.

Pendekatan Berasaskan Prosedur

Sesuatu prosedur merangkumi set operasi yang boleh berulang pada baris jadual. Berikut ialah contoh prosedur:

DELIMITER ;;

CREATE PROCEDURE ROWPERROW()
BEGIN
  DECLARE n INT DEFAULT 0;
  DECLARE i INT DEFAULT 0;
  SELECT COUNT(*) FROM table_A INTO n;
  SET i=0;
  WHILE i<n DO 
    INSERT INTO table_B(ID, VAL) SELECT ID, VAL FROM table_A LIMIT i,1;
    SET i = i + 1;
  END WHILE;
END;
;;
Salin selepas log masuk

Selepas mencipta prosedur, anda boleh melaksanakannya menggunakan CALL ROWPERROW();.

Pendekatan berasaskan kursor

Kursor membenarkan lelaran pada set baris yang dikembalikan oleh pertanyaan. Berikut ialah pendekatan berasaskan kursor:

DELIMITER ;;

CREATE PROCEDURE cursor_ROWPERROW()
BEGIN
  DECLARE cursor_ID INT;
  DECLARE cursor_VAL VARCHAR;
  DECLARE done INT DEFAULT FALSE;
  DECLARE cursor_i CURSOR FOR SELECT ID,VAL FROM table_A;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  OPEN cursor_i;
  read_loop: LOOP
    FETCH cursor_i INTO cursor_ID, cursor_VAL;
    IF done THEN
      LEAVE read_loop;
    END IF;
    INSERT INTO table_B(ID, VAL) VALUES(cursor_ID, cursor_VAL);
  END LOOP;
  CLOSE cursor_i;
END;
;;
Salin selepas log masuk

Ingat untuk mengisytiharkan pembolehubah dengan jenis data yang sesuai dan mengendalikan sebarang ralat atau pengecualian.

Pertimbangan

Kedua-dua pendekatan berasaskan prosedur dan berasaskan kursor boleh digunakan untuk menggelung melalui baris jadual. Walau bagaimanapun, kaedah berasaskan prosedur adalah kurang fleksibel daripada kursor. Kursor membenarkan operasi yang lebih kompleks, seperti mengemas kini berbilang baris serentak.

Atas sebab prestasi, pertanyaan berasaskan set biasanya lebih disukai daripada mekanisme gelung. Walau bagaimanapun, untuk tugas atau senario rumit yang memerlukan kemas kini masa nyata, pendekatan gelung mungkin diperlukan.

Atas ialah kandungan terperinci Cara Menggelung Melalui Baris dalam Jadual MySQL: Prosedur lwn Kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan