[firebase-br] Ref. Erro execução SP pela 2ª vez.
Omar Haddad
omarhaddadm em gmail.com
Qua Jun 16 15:06:40 -03 2010
Salve amigos(as),
boa tarde,
Estou com um problema na execução de uma SP no Firebird 1.5.
Rodo a SP pela 1ª vez e ela traz todos os dados ok. Ao tentar rodar pela 2ª
vez, ela exibe no IBExpert a mensagem:
'Unsuccessful execution caused by a system erroe that precludes
sucessful execution of subsequent statements.
Unable to complete network request to host '192.168.10.121".
Foi forçado o cancelamento de uma conexão existente pelo host remoto."
E tentei debugar e a SP roda de boa. Mas rodando via SQL Editor na 2ª vez,
dá 'crepe'.
CODIGO STORED PROCEDURE "SICOM_REC"
begin
INSERT INTO SICOM_REC_TMP (TIPOREGISTRO,
CODORGAO,
RUBRICA,
CONTA_CONTABIL,
VLPREVISTOATUALIZADO,
VLARRECADADO,
VLACUMULADO)
SELECT 10,
(SELECT O.CODIGO_ORGAO_TCMS FROM ORGAO_GESTOR O WHERE O.GESTAO =
:GESTAO),
CASE WHEN PL.CODIGO_TCMS IS NULL THEN
CASE
WHEN SUBSTR(MM.CONTA,1,1) = '9' THEN SUBSTR(MM.CONTA,1,9)
ELSE '0' || SUBSTR(MM.CONTA,1,8)
END
ELSE
CASE
WHEN SUBSTR(PL.CODIGO_TCMS,1,1) = '9' THEN
SUBSTR(PL.CODIGO_TCMS,1,9)
ELSE '0' || SUBSTR(PL.CODIGO_TCMS,1,8)
END
END rubrica,
MM.CONTA,
0,
SUM((COALESCE(MM.CREDITO_NO_MES,0) - COALESCE(MM.DEBITO_NO_MES,0))),
SUM((COALESCE(MM.CREDITO_NO_ANO,0) - COALESCE(MM.DEBITO_NO_ANO,0)))
FROM
MOV_MES_ANO_PERIODO_SICOM(:GESTAO,:EXERCICIO,'100000000000','999999999999',:MES)
MM
LEFT JOIN PLANOCTA PL
ON (PL.GESTAO_CONTROLE = 1)
AND (PL.EXERCICIO = :exercicio)
AND (PL.CODIGO = mm.conta)
WHERE ((MM.CONTA STARTING '1') OR
(MM.CONTA STARTING '2') OR
(MM.CONTA STARTING '9') OR
(MM.CONTA STARTING '72') OR
(MM.CONTA STARTING '79') OR
(MM.CONTA STARTING '82'))
GROUP BY 1,2,3, 4;
INSERT INTO SICOM_REC_TMP (TIPOREGISTRO,
CODORGAO,
RUBRICA,
CONTA_CONTABIL,
VLPREVISTOATUALIZADO,
VLARRECADADO,
VLACUMULADO)
SELECT '10',
(SELECT O.CODIGO_ORGAO_TCMS FROM ORGAO_GESTOR O WHERE O.GESTAO =
:GESTAO),
CASE WHEN PL.CODIGO_TCMS IS NULL THEN
CASE
WHEN SUBSTR(OREC.NATUREZA_RECEITA,1,1) = '9' THEN
SUBSTR(OREC.NATUREZA_RECEITA,1,9)
ELSE '0' || SUBSTR(OREC.NATUREZA_RECEITA,1,8)
END
ELSE
CASE
WHEN SUBSTR(PL.CODIGO_TCMS,1,1) = '9' THEN
SUBSTR(PL.CODIGO_TCMS,1,9)
ELSE '0' || SUBSTR(PL.CODIGO_TCMS,1,8)
END
END rubrica,
OREC.natureza_receita,
SUM(OREC.VALOR) AS vlPrevistoAtualizado,
0.00 AS vlArrecadado,
0.00 as vlAcumulado
FROM ORCREC OREC
JOIN PLANOCTA PL ON
PL.GESTAO_CONTROLE = OREC.GESTAO_CONTROLE AND
PL.EXERCICIO = OREC.EXERCICIO AND
PL.CODIGO = OREC.NATUREZA_RECEITA
WHERE OREC.GESTAO = :GESTAO
AND OREC.EXERCICIO = :EXERCICIO
GROUP BY 1,2,3,4;
FOR SELECT TIPOREGISTRO,
CODORGAO,
RUBRICA,
COALESCE(MIN((SELECT P.NOME FROM PLANOCTA P
WHERE P.GESTAO_CONTROLE = 1
AND P.EXERCICIO = :EXERCICIO
AND P.CODIGO = ST.CONTA_CONTABIL)),'(NÃO LOCALIZADA)') AS NOME,
SUM(VLPREVISTOATUALIZADO) AS VLPREVISTOATUALIZADO,
SUM(VLARRECADADO) AS VLPREVISTOATUALIZADO,
SUM(VLACUMULADO) AS VLPREVISTOATUALIZADO
FROM SICOM_REC_TMP ST
LEFT JOIN PLANOCTA P ON (P.GESTAO_CONTROLE = 1 AND P.EXERCICIO =
:EXERCICIO AND P.CODIGO = ST.conta_contabil )
GROUP BY TIPOREGISTRO, CODORGAO, RUBRICA
ORDER BY RUBRICA,CODORGAO,RUBRICA
INTO :TIPOREGISTRO, :CODORGAO, :RUBRICA, :ESPECIFICACAO,
:VLPREVISTOATUALIZADO, :VLARRECADADO, :VLACUMULADO
DO BEGIN
SUSPEND;
END
DELETE FROM SICOM_REC_TMP;
end
ESTRUTURA DA TABELA "SICOM_REC_TMP"
SESSAO INTEGER DEFAULT CURRENT_CONNECTION NOT NULL,
TIPOREGISTRO INTEGER NOT NULL,
CODORGAO INTEGER NOT NULL,
RUBRICA VARCHAR(9) NOT NULL,
SEQ D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
ESPECIFICACAO VARCHAR_100 /* VARCHAR_100 = VARCHAR(100) */,
VLPREVISTOATUALIZADO VALOR_1202 /* VALOR_1202 = NUMERIC(12,2) */,
VLARRECADADO VALOR_1202 /* VALOR_1202 = NUMERIC(12,2) */,
VLACUMULADO VALOR_1202 /* VALOR_1202 = NUMERIC(12,2) */,
CONTA_CONTABIL D_CONTA_CONTABIL /* D_CONTA_CONTABIL = VARCHAR(12)
*/
Obrigado a todos.
--
Att.
Omar Marques Haddad
Analista de Sistemas Sênior
Mais detalhes sobre a lista de discussão lista