gpt4 book ai didi

mysql - 如何根据包含表名的字符串从表中选择每一行?

转载 作者:可可西里 更新时间:2023-11-01 08:15:26 26 4
gpt4 key购买 nike

在 MySQL 中,我有许多或多或少相同的过程 - 它们都执行相同(或非常相似)的操作,但它们在不同的表上执行。

如果可能的话,我想将这些简化为一个过程,通过表名参数化。例如,假设我想执行一个通用选择:

SELECT * FROM TableFor("TableName")

这(或任何类似的)在 MySQL 中可能吗?是否可以在任何 SQL 方言中使用?

根据 Tomva 的回答

一个完整的例子:

DROP PROCEDURE IF EXISTS example;

CREATE PROCEDURE example(IN tablename VARCHAR(1000)) BEGIN
SET @statement = CONCAT('SELECT * FROM ', @tablename);

PREPARE statement FROM @statement;
EXECUTE statement;
DEALLOCATE PREPARE statement;
END;

CALL example('tablename');

最佳答案

您可以使用 prepared statement 来做到这一点.

这将是一些类似的东西

SET @stat = CONCAT('SELECT * FROM ', @tab'); 

PREPARE stat1 FROM @stat;
EXECUTE stat1;
DEALLOCATE PREPARE stat1;

动态 SQL 在函数中不起作用,因此从中创建一个存储过程,您将能够提供表参数。

关于mysql - 如何根据包含表名的字符串从表中选择每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30079156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com