Sql 标量变量在使用后将变得未声明

Sql 标量变量在使用后将变得未声明,sql,tsql,Sql,Tsql,我第一次使用标量变量@ZeroVATRateId,将其插入TaxRates时,它是有效的,但在下一行,当我插入TaxBreakdown时,它失败了: 必须声明标量变量“@ZeroVATRateId” 到底发生了什么事 DECLARE @ZeroVATRateId int; IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[VatRates]') AND type in (N'U')) BE

我第一次使用标量变量@ZeroVATRateId,将其插入TaxRates时,它是有效的,但在下一行,当我插入TaxBreakdown时,它失败了:

必须声明标量变量“@ZeroVATRateId”

到底发生了什么事

DECLARE @ZeroVATRateId int;

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[VatRates]') AND type in (N'U'))
BEGIN
    SET @ZeroVATRateId = 2;
END
ELSE
BEGIN
    SET @ZeroVATRateId = COALESCE((SELECT TOP 1 Id FROM [VatRates] WHERE VatBandCode = 'Zero'), 2);
END

SET IDENTITY_INSERT [dbo].[TaxRates] ON;
INSERT INTO [dbo].[TaxRates]([Id], [TaxBandCode], [Rate], [StartDate], [EndDate], [Country], [County], [City])
SELECT @ZeroVATRateId, N'ZERORATE', 1, '1900 00:00:00.000 +00:00', '99990101 00:00:00.000 +00:00', NULL, NULL, NULL
GO
SET IDENTITY_INSERT [dbo].[TaxRates] OFF;

INSERT INTO [dbo].[TaxBreakdown]([Id], [TaxRateId], [Rate], [Name], [Priority], [ApplyOnSubtotal])
SELECT @ZeroVATRateId, @ZeroVATRateId, 1, N'ZERORATE', 1, 0
GO

删除
GO
语句以继续使用您的变量。

删除
GO
语句以继续使用您的变量。

无需担心:)这在过去发生在我身上,一旦您知道,就不会再被抓住。也可以随意标记为答案。无需担心:)这在过去发生在我身上,一旦您知道这样你就不会再被抓住了。也可以随意标记答案。