[firebase-br] Delete com INNER JOIN

Tecnobyte Informática temp2 em tecnobyte.com.br
Qui Maio 31 08:29:04 -03 2012


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