Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mysql tạo một thủ tục được lưu trữ từ nhiều thủ tục được lưu trữ

Như tôi nghĩ rằng tính năng ở trên không được triển khai trong MySQL. Xem tại đây để biết thêm thông tin.

Tôi đã đưa ra giải pháp sau đây. Nhưng không chắc đó là cách tiếp cận tốt nhất cho vấn đề này.

DELIMITER //
CREATE PROCEDURE pro_1(IN param1 data_type,IN param2 data_type);
BEGIN
   CREATE TEMPORARY TABLE temp1 AS SELECT * FROM table_name WHERE $where1;
COMMIT;
END //
DELIMITER ;

như trên, bạn có thể tạo hai thủ tục tiếp theo như sau.

DELIMITER //
CREATE PROCEDURE pro_2(IN param1 data_type,IN param2 data_type);
BEGIN
   CREATE TEMPORARY TABLE temp2 AS SELECT * FROM table_name WHERE $where2;
COMMIT;
END //
DELIMITER ;

DELIMITER //
CREATE PROCEDURE pro_3(IN param1 data_type,IN param2 data_type);
BEGIN
   CREATE TEMPORARY TABLE temp3 AS SELECT * FROM table_name WHERE $where3;
COMMIT;
END //
DELIMITER ;

Vì vậy, sau đây là thủ tục chính là sự kết hợp của 3 thủ tục trên.

DELIMITER //
CREATE PROCEDURE master_pro(IN param1 data_type,IN param2 data_type);
BEGIN
   CALL pro_1(param1,param2);
   CALL pro_2(param1,param2);
   CALL pro_3(param1,param2);
   CREATE TEMPORARY TABLE master_temp AS (SELECT * FROM temp1) UNION ALL (SELECT *  FROM temp2) UNION ALL (SELECT * FROM temp3);
COMMIT;
END //
DELIMITER ;

VẬY cuối cùng nếu bạn muốn nhận được bất kỳ kết quả nào khác từ quy trình chính, bạn có thể thực hiện như sau.

DELIMITER //
CREATE PROCEDURE another_pro(IN param1 data_type,IN param2 data_type);
BEGIN
   CALL master_pro(param1,param2);
   SELECT columns_from_master_temp FROM master_temp WHERE where_clause;
COMMIT;
END //
DELIMITER ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql DISTINCT không hoạt động nếu tôi thêm một cột khác

  2. Gửi dữ liệu đến Cơ sở dữ liệu trong ứng dụng web React.js

  3. MySql, tách một chuỗi và chèn vào bảng

  4. Làm thế nào để tạo truy vấn với hai lần kết nối đến một bảng trong Laravel 5.3?

  5. SQL:Cách thực hiện chuỗi không bằng