Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, não sou muito bom em cursores, e tenho que fazer um para poder tratar cada item que existe na minha tabela @TT_ITENS_DT,
porém meu cursor só ta trazendo o primeiro registro e nesse caso, tenho 4 dentro da tabela, onde eu estou errando?
Obrigado.
declare @cd_origem_dt smallint,
@cd_destino_dt smallint,
@cd_produto char(13),
@qt_pedido int,
@message varchar(80)
declare item_cursor cursor
for select cd_origem_dt, cd_destino_dt, cd_produto, qt_pedido from @TT_ITENS_DT
open item_cursor
fetch next from item_cursor
into @cd_origem_dt, @cd_destino_dt, @cd_produto, @qt_pedido
select @cd_origem_dt, @cd_destino_dt, @cd_produto, @qt_pedido
close item_cursor
deallocate item_cursor;Resolvi assim:
--–1. Declara CURSOR (DECLARE)
declare item_cursor cursor
for select cd_origem_dt, cd_destino_dt, cd_produto, qt_pedido from @TT_ITENS_DT
--–2. Abre o CURSOR (OPEN)
open item_cursor
--–3. Alimenta variáveis com os dados do CURSOR (FETCH)
declare @cd_origem_dt smallint,
@cd_destino_dt smallint,
@cd_produto char(13),
@qt_pedido int
fetch next from item_cursor into @cd_origem_dt, @cd_destino_dt, @cd_produto, @qt_pedido
WHILE @@FETCH_STATUS = 0
begin
insert into #tmpRetItemSaldo exec sgf_rec.dbo.p_mrec_consistir_saldo_dev_produto @cd_destino_dt,@cd_origem_dt,@cd_produto,@qt_pedido
-- Pega proximo item do loop
fetch next from item_cursor into @cd_origem_dt, @cd_destino_dt, @cd_produto, @qt_pedido
end
--–4. Fecha e desaloca o CURSOR (CLOSE e DEALLOCATE)
close item_cursor
deallocate item_cursor;
Sugestão:
https://adjuniordba.wordpress.com/2013/07/04/while-para-cursores/
Att.