首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL声明错误

SQL声明错误
EN

Stack Overflow用户
提问于 2013-06-21 03:20:48
回答 3查看 97关注 0票数 0

当我执行下面的SQL时,我得到错误“必须声明表变量”@ID“。”但是我声明了,那有什么问题呢?

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2013-06-21 03:25:15

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

代码语言:javascript
复制
INSERT INTO pcx_vacancyassociationBase  (pcx_vacancyassociationId)
VALUES (@ID)

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

代码语言:javascript
复制
SELECT @ID as 'pcx_vacancyassociationId', pcx_candidate_to_pcx_vacancyId, pcx_candidateid, pcx_vacancyid
INTO  pcx_vacancyassociationExtensionBase
FROM Table

或插入到:

代码语言:javascript
复制
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()即可。

票数 2
EN

Stack Overflow用户

发布于 2013-06-21 03:23:09

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

票数 1
EN

Stack Overflow用户

发布于 2013-06-21 03:25:11

为了声明一个表变量,你必须像声明一个表一样声明它。

如下所示:

代码语言:javascript
复制
DECLARE @ProductTotals TABLE 
(
  Field1 <type>, 
  Field2 <type>
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17222050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档