Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #80067
    Anônimo

      Será que alguém pode me ajudar?

      estou desenvolvendo um trigger.
      e gostaria de saber se tem algum jeito de deixar dinâmico a forma de identicar o valor de um campo…

      ao invez de fixar :NEW.CAMPO1

      eu tenho um select que retorna o nome do campo que eu preciso, exemplo do resultado
      (CHARACTER1 até CHARACTER99)

      o select me informa atualmente que eu preciso do valor que esta no campo, por exemplo, CHARACTER17, só aí eu deveria pegar este campo, como se fosse :NEW.CHARACTER17.

      já tentei: V_VENDOR_CODE := ‘:NEW.’||R_ALT.LOCAL_FORNECEDOR;
      valor do cursor é = CHARACTER17

      tentei também
      str:= ‘:NEW.’||R_ALT.RESULTADO;
      execute immediate str;

      Até o momento sem sucesso

      Será que é possível fazer isto?
      Obrigada.

      #80080
      DanielB
      Participante

        no se si es posible
        el mayor problema es que el bind en el execute immediate se hace con las variables precedidas por : por tanto el new quedaria incluido en ese caso y esperaria hacer un bind

        voy a probar con el dbms_sql

        #80093
        Anônimo

          Hola Daniel

          Gracias por su atención.

          Yo intenté hacer eses procedimientos abajo:

          1) select ‘:new.’ || R_ALT.PADRAO_SKIP_LOTE
          INTO V_1 from DUAL;

          2) str:= ‘select :NEW.’||R_ALT.RESULTADO||’ from dual’;
          execute immediate str into v_var

          3) V_VENDOR_CODE := ‘:NEW.’||R_ALT.LOCAL_FORNECEDOR

          La solucción que encontré, pero es muy retrasado:

          IF (R_ALT.QUANTIDADE_APROVADA=’CHARACTER15′) THEN V_QUANTIDADE_APROVADA:= :NEW.CHARACTER15;
          ELSIF (R_ALT.QUANTIDADE_APROVADA=’CHARACTER16′) THEN V_QUANTIDADE_APROVADA:= :NEW.CHARACTER16;
          ELSIF (R_ALT.QUANTIDADE_APROVADA=’CHARACTER17’) THEN V_QUANTIDADE_APROVADA:= :NEW.CHARACTER17;
          .
          .
          .

          #80100
          DanielB
          Participante

            a lo mas puedes usar un case
            pero coko te decia, los : son la forma de instanciar una variable en el sql dinamico
            con el dbms_sql tampoco encontre solucion
            lamentablemente, si se me ocurre alguna otra posibilidad te escribire
            suerte

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