SQL声明错误

时间:2013-06-20 19:20:48

标签: sql sql-server

当我执行下面的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

3 个答案:

答案 0 :(得分: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()。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

为了声明一个表变量,你必须将其声明为一个表。

像这样:

DECLARE @ProductTotals TABLE 
(
  Field1 <type>, 
  Field2 <type>
)