如何解决“必须声明标量变量"?表变量时出错? [英] How to fix "Must declare the scalar variable" error when referencing table variable?
本文介绍了如何解决“必须声明标量变量"?表变量时出错?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道为什么(或者也许你做不到)我得到了超出范围的错误
I can't figure out why (or maybe you just can't do this) I get the out of scope error
必须声明标量变量"@CompanyGroupSites_Master.
Must declare the scalar variable "@CompanyGroupSites_Master.
是不是我无法在游标中以这种方式访问Table变量,或者我一定错过了一些简单的事情,即从游标体内进行引用时,该表变量超出了范围?
So is it that I cannot access my Table variable this way inside my Cursor, or I must have missed something simple that's keeping that table variable out of scope when referencing from within the cursor body?
DECLARE @TotalCompaniesToProcess int
SET @TotalCompaniesToProcess = (select distinct Count(BusinessLine) from vwBuisinessUnit)
IF(@TotalCompaniesToProcess > 0)
BEGIN
---------------- ############# SETUP ############# ----------------
DECLARE @Companies TABLE (Company varchar(30))
Insert Into @Companies select distinct Company from Companies
DECLARE @CompanyGroups_Added TABLE(
CompanyGroupDesc varchar(50),
size varchar(50)
)
DECLARE @CompanyGroupSites_Added TABLE (
CompanyGroupID int,
CompanyID varchar(12)
)
DECLARE @CompanyGroupSites_Master TABLE (
CompanyGroupID int,
CompanyID varchar(12)
)
Insert into @CompanyGroupSites_Master select CompanyGroupID, CompanyID from Sec.CompanyGroupSites
DECLARE @CompanyGroupID int
DECLARE @Company int
---------------- END SETUP ----------------
---------------- UPDATE THE COMPANIES ----------------
DECLARE Companies_Cursor CURSOR FOR (select distinct BusinessLine from vwBuisinessUnit)
--select distinct BU, BusinessLine from vwBusinessUnit
Open Companies_Cursor
Fetch NEXT FROM Companies_Cursor into @Company
WHILE @@FETCH_STATUS = 0
BEGIN
-- is there an existing CompanyGroup for this Organization? If not create it
SET @CompanyGroupID = ( select CompanyGroupID from Sec.CompanyGroup
where size = 'Business'
and CompanyGroupDesc = @Company)
IF(@CompanyGroupID < 1)
BEGIN
INSERT INTO @CompanyGroups_Added ([CompanyGroupDesc], [Size])
VALUES (@Company, 'Business')
SET @CompanyGroupID = @@IDENTITY
select @CompanyGroupID as CompanyGroupID_Added -- testing
END
Select ToDelete.* from (
select CompanyGroupID, Company
from @CompanyGroupSites_Master
where @CompanyGroupSites_Master.CompanyGroupID = @CompanyGroupID) as ToDelete
delete from @CompanyGroupSites_Master where @CompanyGroupSites_Master.CompanyGroupID = @CompanyGroupID
Fetch NEXT FROM Companies_Cursor into @Company
END
CLOSE Companies_Cursor
DEALLOCATE Companies_Cursor
END
推荐答案
This is a long standing parser issue. You need to get rid of the table prefix or wrap it in square brackets.
即
delete from @CompanyGroupSites_Master
where CompanyGroupID = @CompanyGroupID
或
delete from @CompanyGroupSites_Master
where [@CompanyGroupSites_Master].CompanyGroupID = @CompanyGroupID
不
delete from @CompanyGroupSites_Master
where @CompanyGroupSites_Master.CompanyGroupID = @CompanyGroupID
这篇关于如何解决“必须声明标量变量"?表变量时出错?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文