【发布时间】:2014-10-21 14:20:46
【问题描述】:
我想在不同的时间运行一个类似的查询,只改变 where 子句中的一件事和它从中提取的表名。
declare ?tablename varchar(100);
set ?tablename = 'some_table_this_time';
declare ?id int;
set ?id = 12
select * from ?tablename
where my_id = ?id
此语法不适用于 teradata。我在其他 sql 程序中使用过 @variable 语法,但在 teradata 中找不到正确的方法。
研究:
http://forums.teradata.com/forum/database/using-parameters-with-queries
【问题讨论】:
-
可能重复:this
-
大多数 DBMS(包括 Teradata)不支持在动态 SQL 之外作为变量传递的表名。如果您使用 SQL 助手,您可以简单地按原样运行 select * from ?tablename where my_id = ?id,它会提示输入这两个变量。