为什么我收到一条错误消息,上面写着"无效的对象名称"当我在当前批次中声明我的变量时?

时间:2016-11-23 16:45:28

标签: sql sql-server tsql

declare @docs table(
    DocID int
)

insert into @docs (DocID)
select DocID
from tblDoc
where tblDoc.BatchID = #Batch_id#

select *
from tblPage
inner join [@docs]
on tblPage.DocID = [@docs].DocID

我尝试将@docs包装在方括号中,我尝试删除where子句,我尝试了不同的插入命令排列,但都没有成功。

我一直得到

  

必须声明标量变量@ docs"消息,或"无效的对象名称消息。

我错过了一些明显的东西吗?

使用Microsoft SQL Server 2008(RTM) - 10.0.1600.22

2 个答案:

答案 0 :(得分:3)

别名你的表var

select *
from tblPage
inner join @docs d
on tblPage.DocID = d.DocID

只是不要问我为什么:)

答案 1 :(得分:1)

您不应该在JOIN中使用括号。以下似乎工作正常:

create table tblDoc
(
    DocID int,
    BatchID INT
)

create table tblPage
(
    DocID int
)

declare @docs table(
    DocID int
)

insert into @docs (DocID)
select DocID
from tblDoc
where tblDoc.BatchID = 1

select *
from tblPage
inner join @docs
on tblPage.DocID = [@docs].DocID