在SQL中的表中声明变量

时间:2014-02-14 12:09:41

标签: sql-server

我有一个需要帮助的以下查询

Declare @DB varchar(3) 
set @DB = 'C01' 
SELECT * FROM SVBNORD+@DB WHERE ORDER_DATE = ''

但我收到了一条消息

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '+'.

请你帮我纠正我的陈述。

2 个答案:

答案 0 :(得分:2)

您应该使用execute动态调用查询:

Declare @DB varchar(3) 
set @DB = 'C01' 

execute ('SELECT * FROM SVBNORD'+@DB+' WHERE ORDER_DATE = '''' ')

答案 1 :(得分:1)

你不能在普通的sql中这样做。但是,你可以动态地构建sql并执行它,如下所示:

DECLARE @sql NVARCHAR(MAX);

SET @sql = 
'SELECT * FROM SVBNORD' + @DB + N'WHERE ORDER_DATE = ''''';
EXEC(@sql);

您需要将查询中的任何单引号加倍。