[firebase-br] Procedure que Verifica se Existe o Registro na Tabela - Duvidas de Iniciante

Almir Fiorio almir74 em gmx.net
Seg Jul 18 22:22:57 -03 2005


*Ok
Obrigado Amigo Eduardo :)

Sabe aopnde acho varios e bons exemplos de triggerse procedures?

algum bom livro sobre o assunto?

Grato
Almir*

Eduardo Resek escreveu:

> Almir Fiorio wrote:
>
>> Amigos
>>
>> Resolvi! Consegui com a juda do amigo Rafael Cabral
>>
>> A minha procedure ela exclui o produto da tabela
>> e se nao existir o produto ele mostra uma exception!!
>>
>> ele me ajudou usando o count, mas gostaria de saber se tem soucao 
>> mais simples
>>
>> ficou assim , exemplo  :
>>
>> CREATE PROCEDURE proc_del
>>    (ID INTEGER)
>> AS
>> DECLARE VARIABLE QUANT INTEGER;
>> BEGIN
>>    SELECT COUNT(ID) FROM TABELA WHERE ID = :ID INTO :QUANT
>>    IF (QUANT = 0) THEN
>>        EXCEPTION <NOME DA EXCEPTION>
>>    ELSE
>>        DELETE FROM TABELA WHERE ID = :ID
>>
>> ------------------------------------------------------------------------
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>> Para editar sua configuração na lista, use o endereço 
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> SELECT COUNT    não é uma boa idéia, pois o firebird vai varre todos 
> os registros para efetuar a contagem. No seu caso basta verificar se 
> existe UM registro, o que pode ser feito assim:
>
> CREATE PROCEDURE proc_del
>   (ID INTEGER)
> AS
> BEGIN
>   IF (EXISTS (SELECT 1 FROM TABELA WHERE ID= :ID )) THEN
>       DELETE FROM TABELA WHERE ID = :ID ;
>   ELSE
>       EXCEPTION <NOME DA EXCEPTION> ;
> END
>
> A diferença é que, desse modo, ao encontrar o primeiro registro que 
> satisfaz à condição (e que deve ser o único, pois ID é chave primária, 
> correto?), a busca já é encerrada e a próxima instrução é executada. 
> Com o count, mesmo depois de encontrado o registro com a ID 
> pretendida, a busca continua até que todos os registros da tabela 
> tenham sido verificados. Numa tabela muito populada, isto pode fazer 
> uma diferença considerável.
>
> Eduardo Resek
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>




Mais detalhes sobre a lista de discussão lista