2012-03-23 29 views
-5

,我在下面的行收到「附近有語法錯誤‘+’錯誤:有什麼不對我的SQL

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; 

我在這裏失去了一些東西?

+1

jeez 5 downvotes類似於打樁,而不是像他/他對這17m問題負責。但是先生/女士793468你還有一個涉及動態sql的問題,你應該接受答案或者繼續跟進。 – 2012-03-23 18:41:21

回答

1

不能使用變量數據在您的FROM基地或表格。唯一的辦法是使用動態sql(但在看看this link之前)。

Declare @TABLE_NAME varchar(10) 
Declare @SCHEMA_NAME varchar(10) 
Declare @DATABASE_NAME varchar(10) 
Declare @QUERY VARCHAR(4000) 

Set @TABLE_NAME = 'Freshmen'; 
Set @SCHEMA_NAME = 'stu'; 
Set @DATABASE_NAME = 'Student'; 
Set @QUERY = 'Select * FROM ' + QUOTENAME(@DATABASE_NAME) + '.' + QUOTENAME(@SCHEMA_NAME) + '.' + QUOTENAME(@TABLE_NAME) 

EXEC(@QUERY) 
1

你缺少第三declare

e,基本上,你不能運行這個,你就需要加載您選擇的一個字符串,執行的是字符串:

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) 
0
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)