Sql 如何修复错误变量名已声明。变量名在查询批处理或存储过程中必须是唯一的?
我正在SQL Server中创建一个脚本,它组合了多个查询。在每个查询中,我都声明一个变量Sql 如何修复错误变量名已声明。变量名在查询批处理或存储过程中必须是唯一的?,sql,sql-server,ssms,Sql,Sql Server,Ssms,我正在SQL Server中创建一个脚本,它组合了多个查询。在每个查询中,我都声明一个变量@FieldName。当我运行脚本时,它给出以下错误 Msg 134,第15级,状态1,第24行变量名“@FieldName”有 已经申报了。变量名在查询中必须是唯一的 批处理或存储过程 这些查询有更多的代码,我只是提供了最少的代码 脚本: BEGIN TRY BEGIN TRANSACTION Print '1' DECLARE @FieldName NVARCHAR
@FieldName
。当我运行脚本时,它给出以下错误
Msg 134,第15级,状态1,第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
我们如何解决这个问题?有两种可能性。使用
GO
分离批次。(有效地分割了查询的范围。所有先前声明的变量在下一个查询批中都不可用。)
或者只声明一次变量并使用SET
大多数情况下,您都希望选项2重用声明。但有时,当您的语句需要GO
(创建视图)时,您需要使用选项1
选择1
选择2
除非使用GO语句,否则可以在SQL语句中声明一次变量
在语句顶部声明该变量,只需更改每个块下的值即可代码>非
执行
BEGIN TRY
BEGIN TRANSACTION
Print '1'
DECLARE @FieldName NVARCHAR(100) = 'Bank Name';
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
GO -- Batch seperator
BEGIN TRY
BEGIN TRANSACTION
DECLARE @FieldName NVARCHAR(100) = 'Account Number';
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
DECLARE @FieldName NVARCHAR(100) -- Declare once
BEGIN TRY
BEGIN TRANSACTION
Print '1'
SET @FieldName = 'Bank Name'; -- Use Set to set the value
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
BEGIN TRY
BEGIN TRANSACTION
SET @FieldName = 'Account Number'; -- Use Set to set the value
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH