Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql прави съхранена процедура от множество съхранени процедури

Както мисля, че по-горе функцията не е внедрена в MySQL. Вижте тук за повече информация.

Измислих следното решение. Но не съм сигурен, че това е най-добрият подход към този проблем.

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 ;

както по-горе, можете да създадете следващите две процедури, както следва.

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 ;

Следва основната процедура, която е обединение на по-горе 3 процедури.

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 ;

И накрая, ако искате да получите други резултати от основната процедура, можете да направите следното.

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. Свързване на Google Cloud SQL с Wordpress на Google Compute Engine

  2. mysql.connector.errors.ProgrammingError:1064 (4200):Имате грешка във вашия SQL синтаксис;

  3. Синтактична грешка с IF EXISTS UPDATE ELSE INSERT

  4. 2 начина за връщане на редове, които съдържат буквено-цифрови знаци в MySQL

  5. нещо за ansi_nulls