[firebase-br] Delete com INNER JOIN

Fausto fausto.s.a em uol.com.br
Sáb Jun 2 10:37:13 -03 2012


Obrigado pela excelente explanação Daniel, vou seguir seu conselho.

Em 31/05/2012 08:29, Tecnobyte Informática escreveu:
> Olá Fausto, bom dia
>
> Cada desenvolvedor tem suas preferências e costumes, mas se eu fosse 
> você não criaria stored procedure para algo simples como este. Eu 
> geralmente crio stored procedure somente quando sua criação resultar 
> em ganho significativo, seja em performance ou praticidade. Mas no 
> caso deste DELECT com EXISTS, uma stored procedure não faria muita 
> diferença no resultado.
>
> O lado ruim de se criar muitas stored procedures (especialmente quando 
> desnecessárias) é que cria-se muitas dependências entre os objetos no 
> banco de dados e quando tiver que alterar alguma coisa na estrutura da 
> tabela terá que sair removendo estas dependências todas para somente 
> depois conseguir alterar o que de fato deseja. Quanto menos 
> dependências, mais fácil será para alterar a estrutura de uma tabela.
>
> Atenciosamente.
>
> Daniel P. Guimarães
> Tecnobyte Informática
> www.tecnobyte.com.br
>
> -----Mensagem Original----- From: Fausto
> Sent: Thursday, May 31, 2012 6:22 AM
> To: lista em firebase.com.br
> Subject: Re: [firebase-br] Delete com INNER JOIN
>
> Beleza..
> Deu certo aqui, mas estou pensando em passar isso para uma SP
>
> Em 30/05/2012 09:31, Tecnobyte Informática escreveu:
>> Veja se isto resolve sem problema:
>>
>> DELETE FROM PEDIDOS P
>> WHERE P.EMIPEDIDO <= :DATAFIM AND
>>  EXISTS(SELECT * FROM COMISSOES C
>>              WHERE C.NRPEDIDO = P.NRPEDIDO AND C.BAIXADA IS NOT NULL)
>>
>>
>> Atenciosamente.
>>
>> Daniel P. Guimarães
>> Tecnobyte Informática
>> www.tecnobyte.com.br
>>
>> -----Mensagem Original----- From: Fausto
>> Sent: Tuesday, May 29, 2012 7:22 PM
>> To: lista em firebase.com.br
>> Subject: [firebase-br] Delete com INNER JOIN
>>
>> Pessoal..
>> Preciso executar uma rotina de fechamento anual em uma tabela de
>> pedidos, esta rotina se dá da seguinte forma:
>> Devo excluir todos os pedidos cuja data de emissão forem menor ou igual
>> a que eu informar, mas que não tenha nenhuma comissão em aberto.
>> Estou tentando algo do tipo
>> *DELETE FROM PEDIDOS P
>> INNER JOIN COMISSOES C ON (C.NRPEDIDO = P.NRPEDIDO)
>> WHERE P.EMIPEDIDO <= :DATAFIM
>>   AND C.BAIXADA IS NOT NULL
>>
>> *Existe alguma forma de fazer isso ou teria que ser via SP?
>> Grato
>>
>

-- 
Fausto Alves
Skype:faustoalves
msn:faustoalves em com4.com.br
Franca-SP
Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird




Mais detalhes sobre a lista de discussão lista