标量变量在使用后变为未声明

时间:2013-11-07 13:31:45

标签: 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'))
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

1 个答案:

答案 0 :(得分:4)

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