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