Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql存储过程选择表_Mysql_Stored Procedures - Fatal编程技术网

MySql存储过程选择表

MySql存储过程选择表,mysql,stored-procedures,Mysql,Stored Procedures,我的数据库中有多个表用于(类似但不同的)产品 是否可以根据参数选择要使用的表(下面的示例)? (这将使我不必拥有同一程序的多个类似副本) 我认为在查询中不可能有变量表名 我们自己的解释 表名、列名等不能是动态的 描述。由于许多原因,SQL语言不允许这样做 例如,查询优化器将无法决定 如果在解析时不知道使用哪些表,则使用哪个索引 正在查询和列 可以创建如下命令: SET @query := CONCAT("REPAIR TABLE ", @tableName); PRE

我的数据库中有多个表用于(类似但不同的)产品

是否可以根据参数选择要使用的表(下面的示例)? (这将使我不必拥有同一程序的多个类似副本)



我认为在查询中不可能有变量表名

我们自己的解释

表名、列名等不能是动态的 描述。由于许多原因,SQL语言不允许这样做

例如,查询优化器将无法决定 如果在解析时不知道使用哪些表,则使用哪个索引 正在查询和列


可以创建如下命令:

SET @query := CONCAT("REPAIR TABLE ", @tableName);             
PREPARE stmt FROM @query;             
EXECUTE stmt;             
DEALLOCATE PREPARE stmt;   

如您所见,您可以将任何字符串/变量推入该命令中(在任何地方使用变量)。

我认为真正的问题在于您的数据库是否具有所需的规范化级别。为什么是“ProductGroup”不是sinlge product表上的字段,因此允许您选择ProductGroup具有特定值的行?

,因为每个产品都有不同的参数集,因此需要唯一的表。为了进一步增加复杂性,参数集将来可能会增加,我还需要使用不同的版本。
SET @query := CONCAT("REPAIR TABLE ", @tableName);             
PREPARE stmt FROM @query;             
EXECUTE stmt;             
DEALLOCATE PREPARE stmt;