Sql server 2008 SQL server事务中的变量持久性
我有一个大型的T-SQL脚本,可以打开和关闭一些事务。我已经读到,使用GO语句提交批处理可以有效地清除其作用域中的所有变量 根据下面的脚本,提交事务后是否会定义@MyImportantVariable 这是一个问题吗?如果是,我如何克服它Sql server 2008 SQL server事务中的变量持久性,sql-server-2008,tsql,Sql Server 2008,Tsql,我有一个大型的T-SQL脚本,可以打开和关闭一些事务。我已经读到,使用GO语句提交批处理可以有效地清除其作用域中的所有变量 根据下面的脚本,提交事务后是否会定义@MyImportantVariable 这是一个问题吗?如果是,我如何克服它 DECLARE @MyImportantVariable INT; SET @MyImportantVariable = 42; DECLARE @Counter INT; SET @Counter = 0 DECLARE UpdateGarmentCur
DECLARE @MyImportantVariable INT;
SET @MyImportantVariable = 42;
DECLARE @Counter INT;
SET @Counter = 0
DECLARE UpdateGarmentCursor CURSOR FAST_FORWARD
FOR
SELECT
MyColumn
FROM
MyWonderfulTable
BEGIN TRANSACTION
WHILE @@TRAN_STATUS = 0
BEGIN
-- Do interesting work in here
SET @Counter = @Counter +1
IF(@Counter>10)
BEGIN
COMMIT TRANSACTION
-- What happens here to @MyImportantVariable?
SET @Counter = 0
BEGIN TRANSACTION
END
END
-- Close the transaction one last time
COMMIT TRANSACTION
变量仍然存在 您的示例不包含
GO
命令,只包含事务
GO
发出批次结束的信号。。。批处理和事务是完全不同的两件事
:
GO不是Transact-SQL语句;这是一个由用户识别的命令
sqlcmd和osql实用程序以及sqlserver管理工作室代码
编辑
SQL Server实用程序将GO解释为它们应该发送的信号
SQL实例的当前Transact-SQL语句批
服务器。当前一批语句由所有语句组成
自上次GO或自临时会话开始后输入,或
如果这是第一次尝试,请编写脚本