0
我正在嘗試爲MySQL 5.1創建一個過程,它將數據庫名稱作爲參數並在該數據庫中發出MULTI DELETE。我遇到了兩個問題,我不知道如何解決:在多表上使用動態數據庫名稱的過程刪除
USE
不能在準備好的語句中使用。當我嘗試時,我得到「這個命令在準備好的語句協議中不被支持」。- 多個DELETE無法刪除不同數據庫中的表。當我嘗試時,我得到「MULTI DELETE中的未知表格x」。
一個代碼示例如下:
DELIMITER $$
CREATE PROCEDURE multi_test (
IN dbname VARCHAR(20)
)
BEGIN
SET @us = CONCAT('USE ', dbname, ';');
PREPARE ustmt FROM @us;
EXECUTE ustmt;
DEALLOCATE PREPARE ustmt;
SET @s = CONCAT('DELETE t FROM ', dbname, '.t as t INNER JOIN ', dbname, '.t2 as t2 IN t.f_id = t2.id');
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
再次,這會導致「該命令沒有在準備語句協議還支持」。
另一個目標是保持在MySQL中 - 我寧願不使用連接到MySQL的腳本語言,而只是從客戶端CLI調用一些MySQL過程。不過,如果在MySQL中可能的話,我並不反對使用其他語言的程序(就像你可以在PostgreSQL中那樣)。
你知道你可以接受你自己的答案....? –