我在下一行收到“'+'错误附近的错误语法:
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;
我在这里错过了什么吗?
答案 0 :(得分: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 :(得分:1)
您错过了第三个e
declare
基本上,你不能运行它,你需要在字符串上加载你的选择并执行字符串:
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)
答案 2 :(得分:0)
您应该使用sp_executesql函数
执行此操作答案 3 :(得分: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)