TRANSFORMA ORCAMENTO EM PEDIDO

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
anderson.silva
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 35
Registrado em: Sex, 20 Abr 2012 10:51 am

Bom dia!

Pessoal, alguém pode me ajudar com um pl/sql que transforma um orcamento em pedido?
Para não complicar, tenho uma tabela chamada 'orcamento' com 3 campos: cod_orc, status e cod_item.

No evento status = 'A', devo copiar tudo para uma tabela chamada 'pedido'

At,
Anderson
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Cara,
O que compõe um pedido???Como é esse pedido??? onde é registrado esse pedido??? quando deve ser feito isso???

Está muito vago ainda amigo. Precisa SABER o que vai fazer para ver como vai se fazer.
anderson.silva
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 35
Registrado em: Sex, 20 Abr 2012 10:51 am

Noctifero,

Assim, para simplificar considere a tabela 'orçamento' com 3 atributos, (cod_orc, status, cd_item)
Tenho uma outra tabela 'pedido', esta tambem com 3 atributos (cod_ped, status, cd_item)
quando eu troco o indicador 'status' na tabela 'orçamento' deve disparar uma trigger que cria um cod_ped (sequencia existente), e copia 'orçamento.cod_item' para 'pedido.cod_item'.

Não sei se consegui passar a idéia...

Att,
Anderson
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Pelo que você falou é bem simples.
Desaconselho triggers, só último caso. Se puder fazer no sistema que altera o status do orçamento é o melhor.

Caso trigger ou programa, verificar quando novo valor de status do orçamento for 'A', chamar
um comando de insert:

Selecionar tudo

INSERT INTO PEDIDO(cod_ped, status, cd_item)
VALUES (sequence.nexval,'NEW-WHATEVER', cd_item_orc);
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Conselho amigo: não faça por trigger. Faça uma procedure contendo a transação.

Trigger oculta a lógica, dificulta a manutenção, gera contornos enormes para mutating trigger (e geralmente falhos e implementados erroneamente e com bugs), e ainda prejudica o desempenho com disparo row-by-row.

Faça uma espécie de API da transação. Como vai ser disparada? O usuário faz uma a uma, em lote ou em background (batch)?

A API pode ser genérica, recebendo um array de códigos a serem transformados em pedidos, e processar em lote fica bem mais eficiente que um a um. Ao final faça o commit.
anderson.silva
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 35
Registrado em: Sex, 20 Abr 2012 10:51 am

fsitja escreveu:Conselho amigo: não faça por trigger. Faça uma procedure contendo a transação.

Trigger oculta a lógica, dificulta a manutenção, gera contornos enormes para mutating trigger (e geralmente falhos e implementados erroneamente e com bugs), e ainda prejudica o desempenho com disparo row-by-row.

Faça uma espécie de API da transação. Como vai ser disparada? O usuário faz uma a uma, em lote ou em background (batch)?

A API pode ser genérica, recebendo um array de códigos a serem transformados em pedidos, e processar em lote fica bem mais eficiente que um a um. Ao final faça o commit.

Bom dia!

fsitja

Será disparado na troca de um indicador na tabela orcamento.
você poderia postar um exemplo baseado na especificação acima?, se não for muito trabalho.
Estou começando agora com PL/SQL e ainda tenho muitas dúvidas e preciso que me mostrem oque é certo para eu analizar e estudar. Ia fazer por trigger se não fosse o Daniel e você me alertarem.

Obrigado,

At,
Anderson
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes