Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Criação Procedure


Felipe Leocadio

Pergunta

Boa Tarde Galera,

Estou com um algoritmo aqui onde eu elaboro um UPDATE e em SEGUIDA tenho que rodar o DELETE, porém, o que eu quero fazer é criar uma Procedure que ao ser executada já faz os dois juntos..

Tentarei explicar como funciona o código mas se ficar dificil entender, por favor me avisem..

_____________________________________________________________________________________________________________________________________

Primeiramente :

update Conta_G

set Conta_G.Grupo = NewGrupo

from Conta_G inner join

(Select CASE when Tb1.Grupo < Tb2.Grupo then Tb1.Grupo else Tb2.Grupo END as Grupo,

max(CASE when Tb1.Grupo > Tb2.Grupo then Tb1.Grupo else Tb2.Grupo END) as NewGrupo

from

(select Grupo, Cod

from Conta_G

inner join Rlc_All

on Rlc_All.Cref = Conta_G.C)as Tb1

inner join

(select Grupo, Cod

from Conta_G

inner join Rlc_All

on Rlc_All.Crlc = Conta_G.C)as Tb2

on Tb1.Cod = Tb2.Cod and Tb1.Grupo <> Tb2.Grupo

Group by CASE when Tb1.Grupo < Tb2.Grupo then Tb1.Grupo else Tb2.Grupo END) as AlterG

on AlterG.Grupo = Conta_G.Grupo;

Esse é um UPDATE que eu executo e atualiza alguns campos para mim.

Ele puxa alguns dados em uma tabela chamada All_Rlc que é onde eu executo o seguinde Delete:

delete Rlc_All from Rlc_All inner join

(select tb1.C as CRef, tb2.C as CRlc from

(

select C, Grupo

from Conta_G inner join

(

select CRef from Rlc_All Group By CRef union select CRlc from Rlc_All Group By CRlc

) as Q1

on C = Cref

) as TB1 inner join

(

select C, Grupo

from Conta_G inner join

(

select CRef from Rlc_All Group By CRef union select CRlc from Rlc_All Group By CRlc

) as Q1

on C = Cref

) as Tb2

on Tb1.Grupo = Tb2.Grupo

and Tb1.C < Tb2.C) as TB3

on Tb3.Cref = Rlc_All.Cref

and Tb3.Crlc = Rlc_All.Crlc

_______________________________________________________________________________________________________________________

Explicando melhor, toda vez que eu realizo o UPDATE ele atualiza algumas colunas para mim na tabela principal (CONTA_G) logo, implica na tabela All_Rlc , no caso eu realizo o DELETE para excluir os dados da All_Rlc .. o UPDATE só fica em 0 , quando todos os dados da All_Rlc são "deletados"

Eu acho que ficou muito dificil de enteder, mas não custa eu tentar aqui.

Se alguém conseguir ajudar eu agradeço.

Valeu Galera.

[]´s

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Felipe,

Pra criar uma Procedure, basta colocar o script abaixo antes do Update:

CREATE PROCEDURE dbo.TestedeProcedure
as

Mas para garantir a execução dos dois comandos, deverá utilizar o BEGIN TRAN e COMMIT TRAN. Caso não saiba, seria interessante pesquisar na net algumas explicações e exemplos.

OBS.: o seu script possui muitos subselects. O interessante seria tentar fazer os relacionamentos diretos entre as tabelas. Perceba que está utilizando o INNER JOIN chamando um subselect. Em termo de performance é muito ruim.

Link para o comentário
Compartilhar em outros sites

  • 0

Beleza Fulvio

Obrigado, vou dar uma pesquisada na NET porque realmente procedure eu ainda fico meio perdido para criar. HAUHAUHAUH

Quanto ao relacionamento, eu não estava fazendo, porque estou trabalhando com poucas tabelas, ai na hora nem pensei em fazer isso .. mas, obrigado pela dica de performance.

Abs

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...