Mysql 我正在努力准备一份声明,其中

Mysql 我正在努力准备一份声明,其中,mysql,prepared-statement,mariadb,concat,Mysql,Prepared Statement,Mariadb,Concat,…表名是参数。我在这里找到了解决方案: 但这对我不起作用。这是我的测试: SET @v_sourceTableSize = 0; SET @parameter_sourceTable = category; SET @v_query = CONCAT("SELECT COUNT(*) INTO ",@v_sourceTableSize," FROM ",@parameter_sourceTable); category是my db中的一个表。当我运行这个时,什么都没有发生。没有错误,什么都没有

…表名是参数。我在这里找到了解决方案: 但这对我不起作用。这是我的测试:

SET @v_sourceTableSize = 0;
SET @parameter_sourceTable = category;
SET @v_query = CONCAT("SELECT COUNT(*) INTO ",@v_sourceTableSize," FROM ",@parameter_sourceTable);
category是my db中的一个表。当我运行这个时,什么都没有发生。没有错误,什么都没有。有没有办法让它发挥作用?从早上开始我就一直在寻找解决办法

编辑 我把分类放在引号之间,现在它可以工作了,但我原来的过程没有。请看一看:

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_查询”附近的正确语法; 执行stmt; 选择v_sourceTableSize; 在第17行设置v_sourceTa'

准备好的语句可以访问用户定义的变量,但不能访问本地变量 变量或过程的参数

    SET @v_query = CONCAT("SELECT COUNT(*) INTO ",v_sourceTableSize," FROM ",v_parameterSourceTable);
    PREPARE stmt FROM @v_query;
    EXECUTE stmt;