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

Mysql membuat prosedur tersimpan dari beberapa prosedur tersimpan

Seperti yang saya pikir fitur di atas tidak diimplementasikan di MySQL. Lihat di sini untuk informasi lebih lanjut.

Saya datang dengan solusi berikut. Tapi tidak yakin itu adalah pendekatan terbaik untuk masalah ini.

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 ;

seperti di atas Anda dapat membuat dua prosedur berikutnya sebagai berikut.

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 ;

Jadi berikut ini adalah prosedur utama yang merupakan gabungan dari 3 prosedur di atas.

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 ;

JADI akhirnya jika Anda ingin mendapatkan hasil lain dari prosedur master, Anda dapat melakukan hal berikut.

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. PHP menyimpan kata sandi dalam cookie

  2. Di CentOS7, tidak dapat memulai MySQL

  3. konstanta yang tidak diinisialisasi MysqlCompat::MysqlRes (menggunakan permata mms2r)

  4. Gabungkan string dengan nilai bidang di MySQL

  5. MySql Cursor - Membuat prosedur