[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