我想要一個存儲過程來創建一個臨時表,使用數據填充表,然後返回表。這是我的:爲什麼這個MySQL存儲過程不按照我的要求工作?
CREATE PROCEDURE sp_create_r3(p_panel_id INT)
BEGIN
-- create new temporary table
DROP TABLE IF EXISTS temp;
CREATE TEMPORARY TABLE temp(assembly_id INT, cost1 DECIMAL(10,2), cost2 DECIMAL(10,2));
-- populate table
SELECT sf_assembly_breakdown(assembly_id) AS dummy FROM panel_assembly WHERE panel=p_panel_id;
-- return table
SELECT * FROM temp;
END
CREATE FUNCTION sf_assembly_breakdown (p_assembly_id INT) RETURNS INT
BEGIN
DECLARE cost1 DECIMAL(10,2);
DECLARE cost2 DECIMAL(10,2);
-- calculate cost1, cost2 here
...
-- insert data into temporary table
INSERT INTO temp SELECT p_assembly_id , cost1, cost2;
-- return dummy value
RETURN NULL;
END
雖然這並不奏效!由sp_create_r3
返回的結果集是生成者:
SELECT sf_assembly_breakdown(assembly_id) AS dummy FROM panel_assembly WHERE panel=p_panel_id;
我不想返回這個。我想返回SELECT * FROM temp
;
這可能嗎?如果不是什麼選擇?