2

我将表的变量名称设置为小写:

Set TGT_TABLE = 'tab_name';

但是,当我尝试调用它时:

select * from table($TGT_TABLE);

我收到一个错误:

SQL compilation error: Object 'TAB_NAME' does not exist or not authorized.

为什么它调用我的表名的大写版本另外我在“显示变量”中验证了我的变量确实是小写的

4

2 回答 2

2

你可以这样写你的代码:

declare @TGT_TABLE nvarchar(50),@query nvarchar(50)

Set @TGT_TABLE = 'name of your table';

SET @query = 'SELECT * FROM ' + @TGT_TABLE;
     
EXEC(@query);

它会起作用的。

于 2021-10-06T10:07:46.770 回答
2

为了使用小写标识符,这些标识符必须用双引号括起来。为了将其分配给变量,这必须另外用单引号引起来。

@jarlh 的答案是正确的,请注意双引号周围的单引号。

Set TGT_TABLE = '"tab_name"';
select * from table($TGT_TABLE);

如有疑问,请复制/粘贴

于 2021-10-06T11:32:20.273 回答