Fórum Retorno True/False para Stored Procedure #55062

01/02/2006

0

Pessoal, fiz a seguinte Stored Procedure:

begin
    SELECT COUNT(*) AS QTD FROM CONTROLE_VERSAO
    WHERE (CONTROLE_VERSAO.ID_PAI = :ID_L) AND
          (CONTROLE_VERSAO.TIPO_ARQUIVO = :TIPO_ARQ) INTO :QTD;

    if (QTD = 0) then
    begin
        INSERT INTO CONTROLE_VERSAO
            (ID_PAI, TIPO_ARQUIVO, CRC, DATA_HORA)
        VALUES
            (:ID_L, :TIPO_ARQ, :CRC, :DTHR);
    end
    else
    begin
        UPDATE CONTROLE_VERSAO SET
            ID_PAI = :ID_L,
            TIPO_ARQUIVO = :TIPO_ARQ ,
            CRC = :CRC,
            DATA_HORA = :DTHR
        WHERE CONTROLE_VERSAO.ID_PAI = :ID_L AND
              CONTROLE_VERSAO.TIPO_ARQUIVO = :TIPO_ARQ;
    end

    suspend;
end


Como parâmetros da Stored eu passo: ID_L, TIPO_ARQ, CRC, DTHR.
Esta stored procedure funciona perfeitamente, mas gostaria de saber o seguinte:
1- Como fazer com que seja retornado ao programa a informação de que esta stored foi executada com sucesso (tipo True/False)?
2- Existe [b:0fad3e5b0f]try except[/b:0fad3e5b0f] no Firebird? Gostaria de implementar algo assim nesta Stored...

Valeu!


Rtava

Rtava

Responder

Posts

01/02/2006

Rodolpho123

Use a variável [b:6f2f425b1d]row_count[/b:6f2f425b1d] para instanciar uma variável de saída, ex:
   if (row_count <> 0) then
      Result = ´T´;
   else
      Result = ´F´;



Responder

Gostei + 0

04/02/2006

Orpolonio

A resposta de nosso amigo esta correto, mas;;;;;
Cuidado com o select count(*)

Este varre toda a tabela, nem quero pensar em vc ter 10 milhoes de registros nesta tabela, vai matar seu servidor


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar