How to use a variable across the scope of SQL batch

2

With the batch below, I want to remove the duplicate records and then perform an UPDATE on some values. The querys are in perfect order, but adding some error checks for the process execution, I came across the following error:

  

Must declare the scalar variable "@erroDelete".

How can I declare the variable to be used across the scope?

DECLARE @erroDelete INT
SET @erroDelete = 0 

PRINT 'Deletando registros duplicados.'

BEGIN TRY
    DELETE t
    FROM produtos_sumario t
    INNER JOIN produtos ON t.cod_produto = produtos.cod_produto
    WHERE produtos.cod_empresa <> t.cod_grupo

    DELETE t
    FROM logistica_sumario t
    INNER JOIN produtos ON t.cod_produto = produtos.cod_produto
    WHERE produtos.cod_empresa <> t.cod_grupo

    DELETE t
    FROM cubo t
    INNER JOIN produtos ON t.cod_produto = produtos.cod_produto
    WHERE produtos.cod_empresa <> t.cod_grupo

    DELETE t
    FROM cubo_rentabilidade t
    INNER JOIN produtos ON t.cod_produto = produtos.cod_produto
    WHERE produtos.cod_empresa <> t.cod_grupo

END TRY
BEGIN CATCH
    PRINT 'Falha ao deletar registros';
    PRINT 'Erro ' + CONVERT(VARCHAR, ERROR_NUMBER(), 1) + ': '+ ERROR_MESSAGE()
    SET @erroDelete = 1 
END CATCH
GO

/* ATUALIZAR REGISTROS COM NOVO CÓDIGO DE GRUPO DOS PRODUTOS */

IF (@erroDelete = 0)

    PRINT 'Atualizando registros.'

    BEGIN TRY
        /* TABELA Acordos_GR */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM Acordos_GR t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA submetas */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM submetas t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA metas_vendedores */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM metas_vendedores t
        JOIN produtos p ON p.cod_produto = t.cod_produto

        /* TABELA metas_simulacao */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM metas_simulacao t
        JOIN produtos p ON p.cod_produto = t.cod_produto

        /* TABELA metas_orcada */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM metas_orcada t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA metas_metas */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM metas_metas t
        JOIN produtos p ON p.cod_produto = t.cod_produto

        /* TABELA metas */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM metas t
        JOIN produtos p ON p.cod_produto = t.cod_produto

        /* TABELA itens_notasfiscais */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM itens_notasfiscais t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA cubo_rentabilidade */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM cubo_rentabilidade t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA cubo */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM cubo t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA logistica_sumario */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM logistica_sumario t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

        /* TABELA produtos_sumario */
        UPDATE t
        SET t.cod_grupo = p.cod_empresa
        FROM produtos_sumario t
        JOIN produtos p ON p.cod_produto = t.cod_produto
        WHERE p.cod_produto = t.cod_produto

    END TRY
    BEGIN CATCH
        PRINT 'Falha ao atualizar campo cod_grupo dos registros';
        PRINT 'Erro ' + CONVERT(VARCHAR, ERROR_NUMBER(), 1) + ': '+ ERROR_MESSAGE()
    END CATCH
    GO
    
asked by anonymous 01.02.2016 / 20:01

1 answer

3

Every time you call GO the variables are discarded. Then remove the GO from the script

    
18.02.2016 / 13:53