表名作为变量

时间:2014-08-04 08:19:03

标签: sql

我必须使用一个软件,一旦运行分析,它就会创建一个具有唯一引用ID的表。要通过SQL访问这些结果很麻烦,所以我创建了一个模板,以便用户可以轻松地将结果传递到Excel中。

我遇到的问题是表名不断变化。有没有办法制作:

Select * From <variable>

可能?

提前致谢

2 个答案:

答案 0 :(得分:3)

是的,它被称为动态SQL:

SQL Server

DECLARE @sql AS VARCHAR(MAX)
SET @sql = 'Select * From ' + @yourTableNameVariable
EXEC(@sql)

ORACLE source

sql_stmt := 'Select * From  ' || yourTableNameVariable;
EXECUTE IMMEDIATE sql_stmt;

MySQL source

SET @s = CONCAT('SELECT * FROM ',@yourTableNameVariable);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

<强>声明 我只精通SQL Server。其他示例是对数据库引擎名称旁边的 [source] 中定义的代码的修改。

答案 1 :(得分:1)

有可能使用动态sql例如对于t-sql看起来像

declare @tablename varchar(max),
        @sql varchar(max) 
set @tablename = 'tableName'
set @sql = 'Select * From '+@tablename

exec(@sql)