0
...表名是參數。我在這裏找到了解決方案:unable to store return value from execute statement in mysql 但它不適合我。這是我的測試:我在準備好的陳述中掙扎,其中
SET @v_sourceTableSize = 0;
SET @parameter_sourceTable = category;
SET @v_query = CONCAT("SELECT COUNT(*) INTO ",@v_sourceTableSize," FROM ",@parameter_sourceTable);
類別是在我的分貝表。當我運行這個時,沒有任何反應。沒有錯誤,沒有。有沒有辦法讓它工作?自上午以來我一直在尋找解決方案!
編輯
我把報價和現在,它正在與「類別」,但是我原來的程序沒有。請看看:
DROP PROCEDURE IF EXISTS insert_categories;
DELIMITER $$
CREATE PROCEDURE insert_categories(
IN parameter_sourceTableIdColumnName INTEGER,
IN parameter_sourceTable VARCHAR(25),
IN parameter_sourceColumn VARCHAR(25),
IN parameter_destinationParentCategoryID INTEGER)
MODIFIES SQL DATA
BEGIN
DECLARE v_parameterSourceTable VARCHAR(25) DEFAULT "";
DECLARE v_sourceTableSize INTEGER;
DECLARE v_counter INTEGER DEFAULT 0;
DECLARE v_query VARCHAR(100) DEFAULT "";
DECLARE v_recordName VARCHAR(25) DEFAULT "";
SET v_parameterSourceTable = parameter_sourceTable;
SET v_query = CONCAT("SELECT COUNT(*) INTO ",v_sourceTableSize," FROM ",v_parameterSourceTable);
PREPARE stmt FROM v_query;
EXECUTE stmt;
SELECT v_sourceTableSize;
#SET v_sourceTableSize := (SELECT COUNT(*) FROM parameter_sourceTable);
SET v_sourceTableSize = v_sourceTableSize + 1;
WHILE v_counter < v_sourceTableSize DO
SET v_counter = v_counter + 1;
SET v_recordName = (SELECT parameter_sourceColumn
FROM v_parameterSourceTable
WHERE parameter_sourceTableIdColumnName = v_counter);
CALL insertCategory(v_recordName, parameter_destinationParentCategoryID);
END WHILE;
END $$
DELIMITER ;
我得到這個錯誤:
1064 - 你在你的SQL語法錯誤;檢查與您的MariaDB服務器版本相對應的手冊,以找到在'v_query; EXECUTE stmt; SELECT v_sourceTableSize; SET v_sourceTa」在行17