[firebase-br] Procedure nao funciona

Diogo de Oliveira Cunha diogo.cunhajf em gmail.com
Qui Ago 25 14:23:50 -03 2005


Conforme o Heverton solicitou abaixo esta tambem a trigger(na integra).

Pessoal, no trigger de uma tabela (abaixo)

AS
    DECLARE VARIABLE CodEmpresa  INTEGER;
    DECLARE VARIABLE CodPedestre INTEGER;
    DECLARE VARIABLE Codhorario INTEGER;
    DECLARE VARIABLE UltimoAcesso INTEGER;
    DECLARE VARIABLE SentidoExp VARCHAR(100);
    DECLARE VARIABLE Tipo VARCHAR(6);
begin
     /* Grava AutoInc no numero do acesso */
    if (new.acesso IS NULL) then
        new.acesso = GEN_ID(gen_numero_acesso,1);


    /* Grava o código da empresa e do pedestre */
    Select Codigo,Empresa from pedestres Where cracha = new.cracha
    into :CodPedestre,:CodEmpresa;
    if (:CodPedestre <> 0) then
       new.pedestre = :CodPedestre;
    if (:CodEmpresa <> 0) then
      new.empresa = :CodEmpresa;

    /* Verifica na tabela de histórico qual o codigo da horario, caso
esta seja null */
    if ((new.horario is null) or (new.horario = 0))  then
    begin
        select OutResultado from
sp_retorna_horario_pedestre(new.pedestre,cast(new.datahora as TIME))
        into :codhorario;
        new.horario = :codhorario;
    end

    if (new.tipo is null) then
    begin
        select OutTipo from
sp_tipo_batida_pedestre(new.pedestre,cast(new.datahora as TIME))
        into :Tipo;

        new.tipo = :Tipo;
    end

    if ((new.acesso is not null) or (new.acesso > 0))  then
    begin
      if (new.sentido = 'E') then
      begin
        update Pedestres P set P.ultima_entrada = new.acesso Where
P.codigo = :CodPedestre;
      end
      if (new.sentido = 'S') then
      begin
        update Pedestres P set P.ultima_saida = new.acesso Where
P.codigo = :CodPedestre;
      end
    end
end

chamo a seguinte procedure:
----------------------//---------------------
CREATE PROCEDURE SP_TIPO_BATIDA_PEDESTRE (
   INHORARIO TIME,
   INCODPEDESTRE SMALLINT)
RETURNS (
   OUTTIPO VARCHAR(6))
AS
begin
 select FH.tipo from horarios_pedestres HP, horarios R, faixa_horarios FH
 where (HP.codpedestre = :INCODPEDESTRE) and
       (R.codhorario = HP.codhorario) and
       (FH.codhorario = HP.codhorario)and
       (:INHORARIO BETWEEN FH.horainicio and FH.horafim)
   into :OUTTIPO;
 suspend;
end
-------------------//------------------------
Quando executo a mesma atraves do ibexpert, ela retorna o dado
esperado sem problema, mas quando e disparada dentro da trigger
acontece o seguinte erro:

------------------//---------------
Conversion error from string "1"
Overflow ocurred during data type conversion.
Error Code: 14

Sinceramente nao sei o que pode estar acontecendo, alguem poderia me
ajudar? Ou indicar algum lugar onde possa encontrar a solucao?

Desde ja agradeco a ajuda de todos.

[]´s


-- 
"Um homem propõe-se a tarefa de desenhar o mundo. Ao longo dos anos
povoa um espaço com imagens de províncias, de reinos, de montanhas, de
baías, de naves, de ilhas, de peixes, de habitação, de instrumentos,
de astros, de cavalos e de pessoas. Pouco antes de morrer, descobre
que esse paciente labirinto de linhas traça a imagem de seu rosto."




Mais detalhes sobre a lista de discussão lista