我尝试在存储过程中对另一个数据库(同一服务器)进行一个查询。 一切正常,但我需要使用从参数中收到的动态数据库名称。
CREATE PROCEDURE my_sp(
IN in_db_name VARCHAR(32),
OUT out_result VARCHAR(32)
)
BEGIN
/*This working OK*/
SELECT my_col INTO out_result FROM another_db.my_table WHERE id = 1;
/*This NOT WORK :( */
SELECT my_col INTO out_result FROM @in_db_name.my_table WHERE id = 1;
END;
最佳答案
为此目的,您需要使用动态查询。
CREATE PROCEDURE my_sp(
IN in_db_name VARCHAR(32),
OUT out_result VARCHAR(32)
)
SET @s = (concat ("SELECT my_col INTO out_result FROM " , in_db_name.my_table , " WHERE id = 1;"
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
关于MySQL存储过程从in参数设置动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42593087/