जैसा कि मुझे लगता है कि उपरोक्त सुविधा 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 ;