MySQL存储过程从in参数设置动态查询

标签 mysql stored-procedures

我尝试在存储过程中对另一个数据库(同一服务器)进行一个查询。 一切正常,但我需要使用从参数中收到的动态数据库名称。

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/

相关文章:

php - 使用单选按钮和连接表获取 MySQL 数据

azure - DocumentDB存储过程: what does the EnableScriptLogging option do?

mysql - 库存系统 - SQL 不显示缺货商品

php - 无法将 lat/lng 从 Simplexml 发送到 mysql 数据库

sql-server - sp_getapplock 是否会导致 SQL Server 性能问题?

mysql - MySQL 中 SELECT 内的 IF 语句 SQL 查询

php - 为什么我的代码中的 MYSQL 存储过程调用不起作用

Java - Hibernate 调用 MySql 存储过程 - 警告消息

php - mysqli:为什么我需要一条 'if' 语句来创建表?

mysql - 如何验证 NULL/EMPTY 的 MYSQL 日期字段?