[firebase-br] STORED PROCEDURE

Eduardo Baião eduardobaiao em gmail.com
Qua Jan 17 11:45:11 -03 2007


Vc precisa pesquisar um pouco mais.
Stored Procedures no FB usando um código um poquinho mais complicado.

Veja um exemplo de uma proc simples:


SET TERM ^ ;

CREATE PROCEDURE PRCDADOSDOPACIENTE (
    NCODPAC INTEGER)
RETURNS (
    NOME VARCHAR(60),
    SEXO CHAR(1),
    FONE1 VARCHAR(20),
    FONE2 VARCHAR(20),
    DATNAS TIMESTAMP,
    IDADE SMALLINT,
    TIPOMENSTRUA SMALLINT,
    CODEMP VARCHAR(4),
    CODCONV VARCHAR(6),
    CODUNID VARCHAR(4),
    CODATEND INTEGER,
    DATATEND TIMESTAMP,
    MATRICULA VARCHAR(25),
    PLANO VARCHAR(20),
    PADRAO VARCHAR(15),
    EMPRESA VARCHAR(40),
    DEPENDENCIA VARCHAR(6),
    TITULAR VARCHAR(60),
    DATADMISSAO TIMESTAMP,
    DATVALIDADE TIMESTAMP,
    DATVENCTO TIMESTAMP,
    DATPAGTO TIMESTAMP,
    CARTPROF VARCHAR(15),
    ALTURAPAC FLOAT)
AS
begin
 For
    select first 1
       p.nome,
       p.sexo,
       p.fone1,
       p.fone2,
       p.datnas,
       p.idade,
       p.tipomenstrua,
       a.codemp,
       a.codunid,
       a.codatend,
       a.datatend,
       a.codconv,
       a.matricula,
       a.plano,
       a.padrao,
       a.empresa,
       a.dependencia,
       a.titular,
       a.datadmissao,
       a.datvalidade,
       a.datvencto,
       a.datpagto,
       a.cartprof,
       a.alturapac
    From paciente p
         left join atendimento a
         on ( a.codpac = p.codpac ) and
            ( a.matricula <> '' )
    Where
       ( p.codpac = :nCodPac )
    Order By a.datatend desc
    Into  :NOME, :SEXO, :FONE1, :FONE2, :DATNAS, :IDADE, :TIPOMENSTRUA,
          :CODEMP, :CODUNID, :CODATEND, :DATATEND, :CODCONV,
          :MATRICULA, :PLANO, :PADRAO, :EMPRESA, :DEPENDENCIA, :TITULAR,
          :DATADMISSAO, :DATVALIDADE, :DATVENCTO, :DATPAGTO,
          :CARTPROF, :ALTURAPAC
 do begin

    if ( alturapac is null ) then begin

       select first 1
            a.alturapac
       From paciente p
            left join atendimento a
            on ( a.codpac = p.codpac ) and
               ( a.alturapac is not null )
       Where
          ( p.codpac = :nCodPac )
       Order By a.datatend desc
       Into  :ALTURAPAC;
    end

    suspend;
 end

end
^

SET TERM ; ^ 







Mais detalhes sobre a lista de discussão lista