sql-server – 如何在引用表变量时修复“必须声明标量变量”错误
发布时间:2020-12-12 06:56:04 所属栏目:MsSql教程 来源:网络整理
导读:我无法弄清楚为什么(或者你可能不能这样做)我得到了超出范围的错误 Must declare the scalar variable “@CompanyGroupSites_Master. 那么我无法在我的Cursor中以这种方式访问??我的Table变量,或者我一定错过了一些简单的东西,当从光标体内引用时保持该表变
我无法弄清楚为什么(或者你可能不能这样做)我得到了超出范围的错误
那么我无法在我的Cursor中以这种方式访问??我的Table变量,或者我一定错过了一些简单的东西,当从光标体内引用时保持该表变量超出范围? 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 解决方法这是一个 long standing parser issue.您需要摆脱表前缀或将其包装在方括号中。即 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |