要在 MySQL 存储过程中查询动态表名和查询条件,可以使用动态 SQL 语句和 PREPARE 语句。

首先,您需要定义一个变量来存储动态表名和查询条件。例如,假设动态表名存储在变量 'table_name' 中,查询条件存储在变量 'condition' 中。

然后,您可以使用 PREPARE 语句来构建动态 SQL 语句,并将其存储在一个变量中。例如,以下示例演示如何构建动态 SQL 语句:

SET @sql = CONCAT('SELECT * FROM ', @table_name, ' WHERE ', @condition);

接下来,您可以使用 EXECUTE 语句来执行动态 SQL 语句并将结果存储在一个游标中。例如,以下示例演示如何执行动态 SQL 语句:

PREPARE stmt FROM @sql;
EXECUTE stmt;

最后,您可以使用 FETCH 语句从游标中检索结果。例如,以下示例演示如何检索结果:

FETCH NEXT FROM stmt INTO ...;

完整的示例代码如下:

DELIMITER //

CREATE PROCEDURE dynamic_query()
BEGIN
    DECLARE @table_name VARCHAR(50);
    DECLARE @condition VARCHAR(50);
    DECLARE @sql VARCHAR(100);
    
    -- 设置动态表名和查询条件
    SET @table_name = 'your_table_name';
    SET @condition = 'your_condition';
    
    -- 构建动态 SQL 语句
    SET @sql = CONCAT('SELECT * FROM ', @table_name, ' WHERE ', @condition);
    
    -- 执行动态 SQL 语句并存储结果在游标中
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    
    -- 检索结果
    FETCH NEXT FROM stmt INTO ...;
    
    -- 关闭游标
    CLOSE stmt;
END//

DELIMITER ;

请注意,上述示例中的 'your_table_name' 和 'your_condition' 应替换为实际的表名和查询条件。另外,还需要根据实际情况调整变量和字段的数据类型。


原文地址: https://www.cveoy.top/t/topic/qcrE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录