【问题标题】:how to input table as a variable in MySQL如何在 MySQL 中将表作为变量输入
【发布时间】:2020-10-03 15:07:59
【问题描述】:

我正在尝试使用带有 MySQL 查询的动态过程从表中获取数据。 有什么具体的方法吗? 我正在尝试下面的这个过程,但是变量仍然作为列返回。

见下面的代码:

DELIMITER $

DROP PROCEDURE IF EXISTS REC_DATA$

CREATE PROCEDURE REC_DATA( IN_TABLE_NAME VARCHAR(20) )

BEGIN

    BEGIN

        SET @in_table = IN_TABLE_NAME;
        SET @sql_stmt = CONCAT(' SELECT student_id FROM ' , @in_table);

        SELECT @sql_stmt;
        PREPARE stmt FROM @sql_stmt;
        EXECUTE stmt;

    END;

END$

DELIMITER ;

我收到此错误:ERROR: ERROR 1054 (42S22): Unknown column 'SCORE' in 'field list'

有人可以帮助我吗? 谢谢!

【问题讨论】:

    标签: mysql dynamic procedure


    【解决方案1】:

    如果我没有用单引号将调用语句中的参数括起来,我可以复制此错误。

    【讨论】:

    • 是的!之后我发现我说错了。
    【解决方案2】:

    按照正确的代码:

    
    DELIMITER $
    
    DROP PROCEDURE IF EXISTS REPORT$
    
    CREATE PROCEDURE REPORT( IN_TAB_NAME VARCHAR(20) )
    
    BEGIN
    
        DECLARE sql_stmt VARCHAR(100);
    
        BEGIN
    
            SET @in_table = IN_TAB_NAME;
            SET @sql_stmt = CONCAT(' SELECT [columns] FROM ' , @in_table, 
                ' GROUP BY [column]');
    
            SELECT @sql_stmt;
            PREPARE stmt FROM @sql_stmt;
            EXECUTE stmt;
    
        END;
    
    END$
    
    DELIMITER ;
    
    

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多