[firebase-br] Stored Procedure Selecionável - "Referência Cruzada"
Jader Ricardo
jader em caramuru.com
Ter Abr 11 14:22:36 -03 2006
Boa tarde amigos !!!
Estou com uma dificuldade em criar uma SP selecionável, eu tenho uma tabela
de serviços, nesta tabela de serviços tenho várias vezes o mesmo individuo,
nestes registros tenho um flag dizendo se foi entregue ou não um determinado
documento. O que eu preciso é fazer uma procedure que me devolvesse todos os
individuos com o respectivo mes "flegado" ou não. Mais ou menos assim :
Individuo Janeiro Fevereiro Março
______________________________________________________________________
Jader Ricardo ENTREGUE ENTREGUE
João da Silva ENTREGUE
José de Oliveira ENTREGUE
O problema é que na minha tabela eu tenho 440 registros, e na SP abaixo só
consigo retornar 439. Caso alguém possa me ajudar, com exemplos ou dizendo o
que está errado eu ficaria grato.
SELECT COUNT(*) FROM TBSERVICOSARECEBER INTO :VARTOTREG;
VARREGATU = 0;
FOR SELECT SAR.PACSAR, PAC.DESPAC, EXTRACT(MONTH FROM SAR.DTSSAR),
SAR.ENTSAR
FROM TBSERVICOSARECEBER SAR LEFT JOIN TBPACIENTE PAC ON SAR.PACSAR =
PAC.CODPAC
ORDER BY PAC.DESPAC INTO :VARCODPAC, :VARDESPAC, :VARMESENT, :VARENTSAR
DO
BEGIN
VARREGATU = VARREGATU +1;
IF (:VARDESPA2 <> :VARDESPAC) THEN
BEGIN
PSCODPAC = :VARCODPA2;
PSDESPAC = :VARDESPA2;
PSMESJAN = :VARMESJAN;
PSMESFEV = :VARMESFEV;
PSMESMAR = :VARMESMAR;
PSMESABR = :VARMESABR;
PSMESMAI = :VARMESMAI;
PSMESJUN = :VARMESJUN;
PSMESJUL = :VARMESJUL;
PSMESAGO = :VARMESAGO;
PSMESSET = :VARMESSET;
PSMESOUT = :VARMESOUT;
PSMESNOV = :VARMESNOV;
PSMESDEZ = :VARMESDEZ;
VARMESJAN = NULL;
VARMESFEV = NULL;
VARMESMAR = NULL;
VARMESABR = NULL;
VARMESMAI = NULL;
VARMESJUN = NULL;
VARMESJUL = NULL;
VARMESAGO = NULL;
VARMESSET = NULL;
VARMESOUT = NULL;
VARMESNOV = NULL;
VARMESDEZ = NULL;
SUSPEND;
END
VARCODPA2 = :VARCODPAC;
VARDESPA2 = :VARDESPAC;
IF ((:VARMESENT = 1) AND (:VARENTSAR = 'E')) THEN
VARMESJAN = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 2) AND (:VARENTSAR = 'E')) THEN
VARMESFEV = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 3) AND (:VARENTSAR = 'E')) THEN
VARMESMAR = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 4) AND (:VARENTSAR = 'E')) THEN
VARMESABR = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 5) AND (:VARENTSAR = 'E')) THEN
VARMESMAI = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 6) AND (:VARENTSAR = 'E')) THEN
VARMESJUN = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 7) AND (:VARENTSAR = 'E')) THEN
VARMESJUL = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 8) AND (:VARENTSAR = 'E')) THEN
VARMESAGO = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 9) AND (:VARENTSAR = 'E')) THEN
VARMESSET = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 10) AND (:VARENTSAR = 'E')) THEN
VARMESOUT = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 11) AND (:VARENTSAR = 'E')) THEN
VARMESNOV = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 12) AND (:VARENTSAR = 'E')) THEN
VARMESDEZ = 'ENTREGUE';
IF (:VARREGATU = :VARTOTREG) THEN
BEGIN
PSCODPAC = :VARCODPA2;
PSDESPAC = :VARDESPA2;
PSMESJAN = :VARMESJAN;
PSMESFEV = :VARMESFEV;
PSMESMAR = :VARMESMAR;
PSMESABR = :VARMESABR;
PSMESMAI = :VARMESMAI;
PSMESJUN = :VARMESJUN;
PSMESJUL = :VARMESJUL;
PSMESAGO = :VARMESAGO;
PSMESSET = :VARMESSET;
PSMESOUT = :VARMESOUT;
PSMESNOV = :VARMESNOV;
PSMESDEZ = :VARMESDEZ;
SUSPEND;
END
END
END
Atenciosamente,
Jader Ricardo
Mais detalhes sobre a lista de discussão lista