我的SQL有什么问题

我的SQL有什么问题,sql,sql-server-2008,Sql,Sql Server 2008,我在下一行的“+”错误附近得到一个不正确的语法: Select * FROM + @DATABASE_NAME + '.' + @SCHEMA_NAME + '.' + @TABLE_NAME; 以下是我的SQL: Declare @TABLE_NAME varchar(10) Declare @SCHEMA_NAME varchar(10) Declare @DATABASE_NAME varchar(10) Set @TABLE_NAME = 'Freshmen'; Set @SCHE

我在下一行的“+”错误附近得到一个不正确的语法:

Select * FROM  + @DATABASE_NAME + '.' + @SCHEMA_NAME + '.' + @TABLE_NAME;
以下是我的SQL:

Declare @TABLE_NAME varchar(10)
Declare @SCHEMA_NAME varchar(10)
Declare @DATABASE_NAME varchar(10)

Set @TABLE_NAME = 'Freshmen';
Set @SCHEMA_NAME = 'stu';
Set @DATABASE_NAME = 'Student';

Select * FROM  + @DATABASE_NAME + '.' + @SCHEMA_NAME + '.' + @TABLE_NAME;

我在这里遗漏了什么吗?

您可能应该使用函数来完成这项操作

您不能在FROM上为数据库或表使用变量。唯一的方法是使用动态sql,但请先看一看

您在第三次申报时丢失了一个e

基本上,您无法运行此操作,您需要在字符串上加载select并执行该字符串:

Declare @TABLE_NAME varchar(10)
Declare @SCHEMA_NAME varchar(10)
Declare @DATABASE_NAME varchar(10)

Set @TABLE_NAME = 'Freshmen';
Set @SCHEMA_NAME = 'stu';
Set @DATABASE_NAME = 'Student';

declare @mySQL varchar(50)
set @mySql= 'Select * FROM ' +  @DATABASE_NAME + '.' + @SCHEMA_NAME + '.' + @TABLE_NAME
exec(@mySql)

天哪,5张反对票似乎越来越多,而不是他/她要为1700万个问题负责。但是先生/女士793468您还有一个涉及动态sql的问题,您应该接受答案,或者继续跟进。
Declare @TABLE_NAME varchar(10)
Declare @SCHEMA_NAME varchar(10)
Declare @DATABASE_NAME varchar(10)

Set @TABLE_NAME = 'Freshmen';
Set @SCHEMA_NAME = 'stu';
Set @DATABASE_NAME = 'Student';

declare @mySQL varchar(50)
set @mySql= 'Select * FROM ' +  @DATABASE_NAME + '.' + @SCHEMA_NAME + '.' + @TABLE_NAME
exec(@mySql)
Declare @sql varchar(max)

Declare @TABLE_NAME varchar(10)
Declare @SCHEMA_NAME varchar(10)
Declare @DATABASE_NAME varchar(10)

set @sql = 'select * from [' + @database_name + '].[' + @schema_name + '].[' + @table_name + ']'

exec (@sql)