quarta-feira, 8 de março de 2017

Cursor T Sql

Abaixo, um exemplo de cursor que atualiza um campo nulo, recém criado com a consulta de uma chave primária em outra tabela.
GO
            SET ANSI_NULLS ON
GO
            SET QUOTED_IDENTIFIER ON
GO
--CREATE PROCEDURE [dbo].[TESTE0001]
ALTER PROCEDURE [dbo].[TESTE0001]
AS BEGIN
DECLARE @RECNO          INT
DECLARE @SQL VARCHAR(250)

DECLARE db_cursor CURSOR FOR 
SELECT R_E_C_N_O_ FROM SZI010 WHERE ZI_XNOME = '' ORDER BY R_E_C_N_O_

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @RECNO
    WHILE @@FETCH_STATUS = 0   
BEGIN
set @SQL = ' UPDATE SZI010 SET ZI_XNOME = ( SELECT B.RA_NOME FROM SRA010 B WHERE 1=1 AND B.D_E_L_E_T_ = '''' AND B.RA_FILIAL + B.RA_MAT IN ( SELECT A.ZI_FILIAL + A.ZI_MAT FROM SZI010 A WHERE A.R_E_C_N_O_ = ' + CONVERT ( varchar(15) , @RECNO ) + ' ) ) WHERE R_E_C_N_O_ = ' + CONVERT ( varchar(15) , @RECNO )
exec(@SQL)
        FETCH NEXT FROM db_cursor INTO @RECNO
    END
CLOSE db_cursor
DEALLOCATE db_cursor
END
exec TESTE0001

Nenhum comentário:

Postar um comentário