MySQL 的 Call 數組是一種非常實用的功能,它可以讓我們實現多個 SQL 語句的執行,并且能夠將其返回的結果全部保存在一個數組中。使用 Call 數組,我們可以方便地對 MySQL 數據庫進行操作,提高開發效率。
例子: DECLARE v_item ENUM('person', 'car', 'book', 'phone'); DECLARE v_id INT; DECLARE v_price DECIMAL(8,2); DECLARE v_count INT; DECLARE v_total DECIMAL(10,2); -- 創建臨時表 CREATE TEMPORARY TABLE tmp_result ( item ENUM('person', 'car', 'book', 'phone'), id INT, price DECIMAL(8,2), count INT, total DECIMAL(10,2) ); -- 遍歷參數數組,執行 SQL 語句,并將結果存儲到 tmp_result 表中 SET @i = 1; WHILE @i<= (SELECT COUNT(*) FROM params) DO SET @sql = CONCAT('SELECT "', params[@i].item, '", "', params[@i].id, '", "', params[@i].price, '", "', params[@i].count, '", "', params[@i].price * params[@i].count, '"'); PREPARE stmt1 FROM @sql; EXECUTE stmt1; INSERT INTO tmp_result VALUES (params[@i].item, params[@i].id, params[@i].price, params[@i].count, params[@i].price * params[@i].count); DEALLOCATE PREPARE stmt1; SET @i = @i + 1; END WHILE; -- 獲取 tmp_result 表的數據,并計算出總價 SELECT * FROM tmp_result; SELECT SUM(total) INTO v_total FROM tmp_result;
在上面的例子中,我們首先定義了一個存儲參數的數組 params。然后通過遍歷這個數組,執行 SQL 語句,將結果存儲到臨時表 tmp_result 中。最后,我們通過查詢這個表,可以獲得所有執行結果的詳細信息,并計算出它們的總價。