0

当我执行下面的 SQL 时,我收到错误“必须声明表变量“@ID”。” 但我要宣布它有什么问题吗?

DECLARE @ID uniqueidentifier
SET @ID = NEWID()

SELECT pcx_vacancyassociationId
INTO      pcx_vacancyassociationBase 
FROM @ID

SELECT pcx_candidate_to_pcx_vacancyId, .pcx_candidateid, pcx_vacancyid

INTO  pcx_vacancyassociationExtensionBase
FROM @ID,  pcx_candidate_to_pcx_vacancyBase.pcx_candidateid, pcx_candidate_to_pcx_vacancyBase.pcx_vacancyid
4

3 回答 3

2

正如其他人提到的那样,问题在于它不是表变量,不确定您要做什么,但也许您的意思是插入值?:

INSERT INTO pcx_vacancyassociationBase  (pcx_vacancyassociationId)
VALUES (@ID)

不完全确定您想要哪些字段,但您可以执行 SELECT INTO:

SELECT @ID as 'pcx_vacancyassociationId', pcx_candidate_to_pcx_vacancyId, pcx_candidateid, pcx_vacancyid
INTO  pcx_vacancyassociationExtensionBase
FROM Table

或插入:

INSERT INTO pcx_vacancyassociationBase  
    SELECT @ID as 'pcx_vacancyassociationId', pcx_candidate_to_pcx_vacancyId, pcx_candidateid, pcx_vacancyid
    INTO  pcx_vacancyassociationExtensionBase
    FROM Table

在这两个版本中,每一行的@ID 都是相同的,如果你想要每一行的随机值,那么不要使用变量,只需在 SELECT 子句中使用 NEWID() 。

于 2013-06-20T19:25:15.137 回答
1

这是因为@ID 不是表;它是一个标量值,一个唯一标识符。您不能在 FROM 子句中使用标量值。

于 2013-06-20T19:23:08.727 回答
0

为了声明表变量,您必须像表一样实际声明它。

像这样:

DECLARE @ProductTotals TABLE 
(
  Field1 <type>, 
  Field2 <type>
)
于 2013-06-20T19:25:11.283 回答