いくつかのトランザクションを開いたり閉じたりする大きなT-SQLスクリプトがあります。GOステートメントを使用してバッチをコミットすると、そのスコープからすべての変数が効果的にクリアされることを読みました。
以下のスクリプトを考えると、トランザクションがコミットされた後に@MyImportantVariableが定義されますか?
これは問題ですか?もしそうなら、どうすればそれを克服できますか?
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