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