Pular para o conteúdo
  • Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 10 anos, 1 mês atrás por Avatar de WenderWender.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #106469
    Avatar de Thiago Jader Macedo da CruzThiago Jader Macedo da Cruz
    Participante

      Boa noite pessoal!!!

      Gostaria de uma ajuda na conversão de uma trigger de sql server para Oracle atualmente trabalho com sql server porem estou migrando para o oracle. a regra é a seguinte:

      tabela Mat = materiais e smk serviços materiais e kits

      oque eu preencher de valor em mat_prc_ult_entrada deve ser atualizado com mesmo valor em smk_preco_custo onde eu comparo o codigo do material com o codigo do serviço que usa o material

      ‘SQL SERVER’
      CREATE TRIGGER TGR_PRECOCUSTO ON MAT
      FOR UPDATE
      AS

      DECLARE @cod CHAR(8);
      DECLARE @valor numeric(20,10);

      select @cod=i.mat_smk_cod from inserted i;
      select @valor =i.mat_prc_ult_entrada
      from inserted i;

      UPDATE smk SET smk_preco_custo = @valor
      WHERE smk_cod = @cod and smk_tipo = ‘M’

      Desde já agradeço a ajuda.

      #106494
      Avatar de Fábio PradoFábio Prado
      Participante

        Thiago,

        Segue abaixo um código de exemplo de uma trigger que utilizo em meus treinamentos de PL/SQL, para ajudar vc a criar a sua. QQ dúvida na estrutura é só perguntar:


        -- criando a trigger
        create or replace TRIGGER HR.TR_EMPLOYEES_LOG
        AFTER INSERT OR DELETE ON HR.EMPLOYEES
        REFERENCING OLD AS LA NEW AS LN
        FOR EACH ROW
        DECLARE
        V_OPERACAO VARCHAR2(20);
        BEGIN
        V_OPERACAO:= CASE WHEN DELETING THEN 'DELETE' ELSE 'INSERT' END;
        -- insere historico de cargos anteriores do empregado
        INSERT INTO HR.LOG_EMPREGADOS
        (ID, DT_INCLUSAO, NM_USER, TP_OPERACAO)
        VALUES
        (DECODE(V_OPERACAO,'INSERT',:LN.EMPLOYEE_ID,:LA.EMPLOYEE_ID), SYSDATE, USER, V_OPERACAO);
        EXCEPTION
        WHEN OTHERS THEN
        NULL;
        END;
        /

        []s

        Fábio Prado
        http://www.fabioprado.net

        #106519
        Avatar de Thiago Jader Macedo da CruzThiago Jader Macedo da Cruz
        Participante

          Obrigado Fabio pela disponibilidade e ajuda da sua parte.este exemplo vai me ajudar muito.

          #106548
          Avatar de Victor ArmbrustVictor Armbrust
          Mestre

            Ola

            Oracle SQL DEVELOPER faz isso

            Abs
            Victor

            #106674
            Avatar de WenderWender
            Participante

              Olá thiago segue abaixo:

              create or replace trigger TGR_PRECOCUSTO
              after update on MAT
              referencing new as new old as old
              for each row

              declare
              v_cod char(8);
              v_valor number;

              begin

               v_cod := :new.mat_smk_cod;
               v_valor := :new.mat_prc_ult_entrada;
              
               update smk
                 set smk_preco_custo = v_valor
                 where smk_cod=v_cod;
              

              end;
              /

              Testado.

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress