Cursor FireBird

Firebird

30/06/2006

Alguem pode informar como posso ver o proximo registro em um cursor (For Select), pois no SQL SERVER uso o FETCH com uma variavel e posso comparar o registro atual com o anterior.

Exemplo SQL SERVER:

while (@@fetch_status = 0)
begin

set @codigo2 = @codigo
set @nome2 = @nome

fetch cursorX into @codigo, @nome
If @codigo2 = @codigo then -- confere codigo atual com anterior
insert into #TempConttribuintes values(@codigo2,@nome2,@codigo)

end


Paeslopes

Paeslopes

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

30/06/2006

tente assim:
for select codigo, nome
     from tabela
     [where ]
into :codigo, :nome do
begin
  if (codigo2 = codigo) then -- confere codigo atual com anterior
    insert into tabelatemp values(:codigo2,:nome2,:codigo);

  codigo2 = codigo;
  nome2 = nome;
end



GOSTEI 0
Paeslopes

Paeslopes

30/06/2006

Caro amigo não funciona, pq na hora do insert o codigo atual existe e o anterior como vai ser inserido?


Analise o seu SQL e veja se vai funcionar.
O Meu resultado em SQL_Sever é assim:

Tabela: Processo
n_processo - Data_entrada - Setor - Requerente
01 - 01/01/2006 - Contabilidade - João
01 - 05/01/2006 - RH - Maria
02 - 03/01/2006 - FINANCAS - CARLOS
02 - 05/01/2006 - CPD - TT
03 - 02/01/2006 - PROTOCOLO - PETER
05 - 01/01/2006 - RH - MBOB
05 - 08/01/2006 - INFORMATICA - ZÉ


Resultado com cursor em sql-server

n_processo - Data_entrada - Dt_Saida - Dias_Proc_Setor
01 - 01/01/2006 - 05/01/2006 - 04
02 - 03/01/2006 - 05/01/2006 - 02
03 - 02/01/2006 - null - Processo no Setor
05 - 01/01/2006 - 08/01/2006 - 07


Obrigado.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

30/06/2006

não seria mais fácil fazer uma instrução simples para isso?
select
  codigo, min(data) entrada, max(data) saida, max(data) - min(data) intervalo
from tabela
group by codigo



GOSTEI 0
POSTAR