Retorno True/False para Stored Procedure

Firebird

01/02/2006

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

Curtidas 0

Respostas

Rodolpho123

Rodolpho123

01/02/2006

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´;



GOSTEI 0
Orpolonio

Orpolonio

01/02/2006

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


GOSTEI 0
POSTAR