Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #82966
    rerodrig
    Participante

      Tenho uma procedure criada, que recebe um parâmetro do tipo rowtype. Vou criar uma trigger que chama essa procedure e quero passar o parâmetro :new, mas dá erro. Seria porque o :new é apenas uma referência a uma linha e não a própria linha? Tem algum outro modo de passar da trigger para a procedure, a linha inteira que está sendo alterada? Valeu!

      #82978
      Marcio68Almeida
      Participante

        você pode atribuir o valor da coluna para uma variável e trabalhar com ela.

        #82990
        rerodrig
        Participante

          Mas o :new eu não consigo atribuir, tem outro jeito de fazer isso, que não seja atribuindo campo a campo para uma variável rowtype da tabela???

          #82991
          Anônimo

            [quote=”rerodrig”:4ix0yl91]Tenho uma procedure criada, que recebe um parâmetro do tipo rowtype. Vou criar uma trigger que chama essa procedure e quero passar o parâmetro :new, mas dá erro. Seria porque o :new é apenas uma referência a uma linha e não a própria linha? Tem algum outro modo de passar da trigger para a procedure, a linha inteira que está sendo alterada? Valeu![/quote]

            Bom dia!

            Essa informação nova vem de uma tabela do banco?

            #82994
            rerodrig
            Participante

              Bom dia, não, é uma informação que será inserida…a trigger dispara antes do insert…

              #82996
              Anônimo

                Tem como vc colocar a trigger aqui para que eu possa dar uma olhada?

                Por exemplo na Trigger Pre-insert
                [declare v_aux number;

                begin
                  select nvl(max(sofo_seq_socio),0) + 1  
                    into v_aux
                    from socio_fornecedor
                    where fcre_cod_fce = :sofo.fcre_cod_fce; 
                  :sofo.sofo_cod_oper  := user;
                :sofo.sofo_dat_oper  := sysdate;
                :sofo.sofo_seq_socio := v_aux;
                

                end;]

                #83000
                rerodrig
                Participante

                  O que eu quero fazer é basicamente o que está abaixo, passar uma linha da tabela como parametro. Nesse caso o parâmetro da procedure prc_funcionario é do tipo funcionarios%rowtype…mas não sei se dá certo, pelo fato do :new ser apenas uma referência…


                  create or replace trigger trg_funcionarios before insert on funcionarios for each row
                  begin
                  prc_funcionario(:new);
                  end;

                  #83001
                  Anônimo

                    [quote=”rerodrig”:3tlaacvl]O que eu quero fazer é basicamente o que está abaixo, passar uma linha da tabela como parametro. Nesse caso o parâmetro da procedure prc_funcionario é do tipo funcionarios%rowtype…mas não sei se dá certo, pelo fato do :new ser apenas uma referência…


                    create or replace trigger trg_funcionarios before insert on funcionarios for each row
                    begin
                    prc_funcionario(:new.'AQUI TEM UM CAMPO QUE É O DA PRC_FUNCIONARIO');
                    end;
                    [/quote]

                    TIPO ASSIM

                    TEM UMA TRIGGER COMO EXEMPLO

                    create or replace trigger TRG_ADITIVOS_X_CONT_FORN
                    before insert or update or delete on ADITIVOS_X_CONT_FORN
                    for each row

                    begin
                    if deleting then
                    begin
                    update contrato_fornecimento
                    set CONF_QTD_ADITADA = nvl(CONF_QTD_ADITADA,0) - :old.AXCF_QTD_ADITADA
                    where INST_NUM_INSTITUICAO = :old.INST_NUM_INSTITUICAO
                    and CONT_SEQ_CONTRATO = :old.CONT_SEQ_CONTRATO
                    and CONT_ANO_CONTRATO = :old.CONT_ANO_CONTRATO
                    and FOMA_SEQ_ITEM = :old.FOMA_SEQ_ITEM
                    and MATE_COD_MATERIAL = :old.MATE_COD_MATERIAL;
                    exception
                    when others then
                    Raise_Application_error( -20050, 'Problemas na Atualizac?o da Tabela Contrato_Fornecimento !');
                    end;
                    elsif inserting then
                    begin
                    update contrato_fornecimento
                    set CONF_QTD_ADITADA = nvl(CONF_QTD_ADITADA,0) + :new.AXCF_QTD_ADITADA
                    where INST_NUM_INSTITUICAO = :new.INST_NUM_INSTITUICAO
                    and CONT_SEQ_CONTRATO = :new.CONT_SEQ_CONTRATO
                    and CONT_ANO_CONTRATO = :new.CONT_ANO_CONTRATO
                    and FOMA_SEQ_ITEM = :new.FOMA_SEQ_ITEM
                    and MATE_COD_MATERIAL = :new.MATE_COD_MATERIAL;
                    exception
                    when others then
                    Raise_Application_error( -20050, 'Problemas na Atualizac?o da Tabela Contrato_Fornecimento !');
                    end;

                    end if;
                    

                    end;

                    [/QUOTE]

                    ESPERO QUE AJUDE

                    #83003
                    rerodrig
                    Participante

                      valeu, mas não é isso que quero…ali onde vc colocou ‘AQUI TEM UM CAMPO QUE É O DA PRC_FUNCIONARIO’, não é para ter nada, quero passar a linha inteira mesmo como parâmetro…mesmo assim valeu pela atenção!

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