我正在sql server中创建一个脚本,它将多个查询组合在一起。在每个查询中,我都声明一个变量 @FieldName
. 当我运行脚本时,它会给出以下错误。
msg 134,level 15,state 1,line 24变量名'@fieldname'已经声明。变量名在查询批处理或存储过程中必须是唯一的。
这些查询有更多的代码,我只是提供最少的代码。
脚本:
BEGIN TRY
BEGIN TRANSACTION
Print '1'
DECLARE @FieldName NVARCHAR(100) = 'Bank Name';
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
BEGIN TRY
BEGIN TRANSACTION
DECLARE @FieldName NVARCHAR(100) = 'Account Number';
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
如何解决这个问题?
2条答案
按热度按时间wmtdaxz31#
有两种可能。使用
GO
分批处理(有效地分割查询的范围。所有先前声明的变量在下一个查询批中都不可用。)或者只声明一次变量并使用
SET
大多数情况下,您都希望选项2重用声明。但有时当你有需要GO
(创建视图)然后您需要使用选项1。方案1
方案2
lf5gs5x22#
除非使用go语句,否则可以在sql语句中声明一个变量
在语句顶部声明该变量,只需更改每个块下的值