Tạo stored procedure nhận tham số, thực hiện 2 lệnh INSERT vào 2 bảng khác nhau.
Cú pháp tạo procedure
DELIMITER //
CREATE PROCEDURE ten_proc(IN ten_tham_so INT)
BEGIN
INSERT INTO bang1(cot1) VALUES(ten_tham_so);
INSERT INTO bang2(cot2) VALUES(ten_tham_so);
END //
DELIMITER ;
Ví dụ minh họa
Tạo 2 bảng:
mysql> CREATE TABLE DemoTable1 (StudentScore INT); mysql> CREATE TABLE DemoTable2 (PlayerScore INT);
Tạo procedure:
mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_proc(IN value INT)
BEGIN
INSERT INTO DemoTable1(StudentScore) VALUES(value);
INSERT INTO DemoTable2(PlayerScore) VALUES(value);
END //
mysql> DELIMITER ;
Gọi procedure:
mysql> CALL insert_proc(89);
Kiểm tra 2 bảng:
mysql> SELECT * FROM DemoTable1; -- 89 mysql> SELECT * FROM DemoTable2; -- 89
Lưu ý:
DELIMITER //thay đổi ký tự kết thúc câu lệnh để tránh nhầm với;bên trong proc.- MySQL không hỗ trợ transaction tự động trong proc - hãy dùng
START TRANSACTION; ... COMMIT;nếu cần atomic. - Proc chạy với quyền
DEFINER(mặc định user tạo), không phảiCALLER(trừ khi khai báoSQL SECURITY INVOKER).