Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh mengulangi semua baris dalam jadual MySQL menggunakan prosedur tersimpan?
Menggelung Melalui Semua Baris dalam Jadual Menggunakan Prosedur
Dalam MySQL, menggelung melalui semua baris jadual memerlukan mencipta prosedur tersimpan. Prosedur membolehkan anda merangkum satu siri pernyataan SQL ke dalam satu unit dan melaksanakannya sebagai satu blok.
Mencipta Prosedur
Untuk menggelungkan semua baris jadual 'A' dan lakukan operasi tertentu, buat prosedur menggunakan yang berikut sintaks:
DROP PROCEDURE IF EXISTS ROWPERROW; -- Delete existing procedure if any DELIMITER ;; -- Change delimiter to avoid statement-by-statement execution CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; -- Declare a variable to count rows DECLARE i INT DEFAULT 0; -- Declare a variable for looping SELECT COUNT(*) INTO n FROM table_A; -- Get the total number of rows SET i = 0; -- Initialize loop counter WHILE i < n DO -- Insert the current row into table 'B' INSERT INTO table_B(ID, VAL) SELECT (ID, VAL) FROM table_A LIMIT i, 1; SET i = i + 1; -- Increment loop counter END WHILE; End; ;; DELIMITER ; -- Reset the delimiter
Menjalankan Prosedur
Setelah prosedur dibuat, ia boleh dipanggil menggunakan sintaks berikut:
CALL ROWPERROW();
Ini akan melaksanakan prosedur dan gelung melalui setiap baris jadual 'A', melaksanakan yang ditentukan operasi.
Contoh
Andaikan anda mempunyai dua jadual, 'A' dan 'B', dengan medan 'ID' dan 'VAL'. Prosedur berikut melingkari semua baris jadual 'A' dan menyalin data ke dalam jadual 'B':
DROP PROCEDURE IF EXISTS ROWPERROW; DELIMITER ;; CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) INTO n FROM table_A; 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; ;; DELIMITER ;
Untuk melaksanakan prosedur dan menyalin data, jalankan arahan berikut:
CALL ROWPERROW();
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengulangi semua baris dalam jadual MySQL menggunakan prosedur tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!