Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #96194
    mpungan
    Participante

      Pessoal,

      Estou com um problema em uma trigger, esta ocorrendo o erro abaixo alguem tem alguma sugestão para resolver esse erro abaixo:
      ORA-04093: references to columns of type LONG are not allowed in triggers

      Valeu.

      #96195
      burga
      Participante

        Tem como postar sua trigger e uma descrição da tabela?

        #96197
        Rodrigo Mesquita
        Participante

          O que essa sua trigger faz?

          #96212
          mpungan
          Participante

            CREATE TABLE DIGI_DOCUM_DIR_IMAGENS_LOG_AIUD (
            IDIMAGEM NUMBER,
            IDDOCUMENTO NUMBER,
            DATACADASTRO DATE,
            MATRICULACADASTRO VARCHAR2(20),
            CAMINHO VARCHAR2(250),
            EXTENSAO VARCHAR2(100),
            NOMEARQUIVO VARCHAR2(4000),
            TAMANHO LONG,
            DESCRICAO VARCHAR2(50),
            DATAALTERACAO DATE,
            DATAVCTO DATE,
            VERSAO VARCHAR2(10),
            TPOPERACAO VARCHAR2(1),
            CDUSUARIO VARCHAR2(30),
            CDIP VARCHAR2(30),
            DTALTERACAO DATE,
            CDLOG NUMBER(15,0)
            );

            CREATE OR REPLACE TRIGGER TRG_DOCUMENTO_DIR_IMAGENS_LOG_AIUD
            AFTER INSERT OR UPDATE OR DELETE ON DIGI_DOCUMENTO_DIR_IMAGENS
            FOR EACH ROW
            DECLARE
            vAtualiza NUMBER :=0;
            BEGIN
            vAtualiza := 0;

            IF INSERTING THEN
            INSERT INTO DIGI_DOCUM_DIR_IMAGENS_LOG_AIUD (IDIMAGEM,
            IDDOCUMENTO,
            DATACADASTRO,
            MATRICULACADASTRO,
            CAMINHO,
            EXTENSAO,
            NOMEARQUIVO,
            TAMANHO,
            DESCRICAO,
            DATAALTERACAO,
            DATAVCTO,
            VERSAO,
            TPOPERACAO,
            CDUSUARIO,
            CDIP,
            DTALTERACAO,
            CDLOG)
            VALUES (
            :new.IDIMAGEM,
            :new.IDDOCUMENTO,
            :new.DATACADASTRO,
            :new.MATRICULACADASTRO,
            :new.CAMINHO,
            :new.EXTENSAO,
            :new.NOMEARQUIVO,
            :new.TAMANHO,
            :new.DESCRICAO,
            :new.DATAALTERACAO,
            :new.DATAVCTO,
            :new.VERSAO
            ‘I’,
            SYS_CONTEXT (‘USERENV’, ‘OS_USER’),
            SYS_CONTEXT (‘USERENV’, ‘HOST’),
            SYSDATE,
            SQ_DOCUMENTO_DIR_IMAGENS_LOG_AIUD.NEXTVAL);
            ELSE IF UPDATING THEN
            IF NVL(:new.IDIMAGEM, 0) NVL(:old.IDIMAGEM, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.IDDOCUMENTO, 0) NVL(:old.IDDOCUMENTO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.DATACADASTRO, 0) NVL(:old.DATACADASTRO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.MATRICULACADASTRO, 0) NVL(:old.MATRICULACADASTRO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.CAMINHO, 0) NVL(:old.CAMINHO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.EXTENSAO, 0) NVL(:old.EXTENSAO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.NOMEARQUIVO, 0) NVL(:old.NOMEARQUIVO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.TAMANHO, 0) NVL(:old.TAMANHO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.DESCRICAO, 0) NVL(:old.DESCRICAO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.DATAALTERACAO, 0) NVL(:old.DATAALTERACAO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.DATAVCTO, 0) NVL(:old.DATAVCTO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF NVL(:new.VERSAO, 0) NVL(:old.VERSAO, 0) THEN
            vAtualiza := 1;
            END IF;

            IF vAtualiza = 1 THEN
            INSERT INTO DIGI_DOCUM_DIR_IMAGENS_LOG_AIUD (IDIMAGEM,
            IDDOCUMENTO,
            DATACADASTRO,
            MATRICULACADASTRO,
            CAMINHO,
            EXTENSAO,
            NOMEARQUIVO,
            TAMANHO,
            DESCRICAO,
            DATAALTERACAO,
            DATAVCTO,
            VERSAO,
            TPOPERACAO,
            CDUSUARIO,
            CDIP,
            DTALTERACAO,
            CDLOG)
            VALUES (
            decode(:new.IDIMAGEM, 😮 ld.IDIMAGEM, null, :new.IDIMAGEM),
            decode(:new.IDDOCUMENTO, 😮 ld.IDDOCUMENTO, null, :new.IDDOCUMENTO),
            decode(:new.DATACADASTRO, 😮 ld.DATACADASTRO, null, :new.DATACADASTRO),
            decode(:new.MATRICULACADASTRO, 😮 ld.MATRICULACADASTRO, null, :new.MATRICULACADASTRO),
            decode(:new.CAMINHO, 😮 ld.CAMINHO, null, :new.CAMINHO),
            decode(:new.EXTENSAO, 😮 ld.EXTENSAO, null, :new.EXTENSAO),
            decode(:new.NOMEARQUIVO, 😮 ld.NOMEARQUIVO, null, :new.NOMEARQUIVO),
            decode(:new.TAMANHO, 😮 ld.TAMANHO, null, :new.TAMANHO),
            decode(:new.DESCRICAO, 😮 ld.DESCRICAO, null, :new.DESCRICAO),
            decode(:new.DATAALTERACAO, 😮 ld.DATAALTERACAO, null, :new.DATAALTERACAO),
            decode(:new.DATAVCTO, 😮 ld.DATAVCTO, null, :new.DATAVCTO),
            decode(:new.VERSAO, 😮 ld.VERSAO, null, :new.VERSAO),
            ‘U’,
            SYS_CONTEXT (‘USERENV’, ‘OS_USER’),
            SYS_CONTEXT (‘USERENV’, ‘HOST’),
            SYSDATE,
            SQ_DOCUMENTO_DIR_IMAGENS_LOG_AIUD.NEXTVAL);
            END IF;
            ELSE IF DELETING THEN
            INSERT INTO DIGI_DOCUM_DIR_IMAGENS_LOG_AIUD (IDIMAGEM,
            IDDOCUMENTO,
            DATACADASTRO,
            MATRICULACADASTRO,
            CAMINHO,
            EXTENSAO,
            NOMEARQUIVO,
            TAMANHO,
            DESCRICAO,
            DATAALTERACAO,
            DATAVCTO,
            VERSAO,
            TPOPERACAO,
            CDUSUARIO,
            CDIP,
            DTALTERACAO,
            CDLOG)
            VALUES (
            :old.IDIMAGEM,
            :old.IDDOCUMENTO,
            :old.DATACADASTRO,
            :old.MATRICULACADASTRO,
            :old.CAMINHO,
            😮 ld.EXTENSAO,
            :old.NOMEARQUIVO,
            :old.TAMANHO,
            :old.DESCRICAO,
            :old.DATAALTERACAO,
            :old.DATAVCTO,
            :old.VERSAO
            ‘D’,
            SYS_CONTEXT (‘USERENV’, ‘OS_USER’),
            SYS_CONTEXT (‘USERENV’, ‘HOST’),
            SYSDATE,
            SQ_DOCUMENTO_DIR_IMAGENS_LOG_AIUD.NEXTVAL);
            END IF;
            END IF;
            END IF;

            END;

            #96223
            burga
            Participante

              Uma coluna chamada TAMANHO de tipo LONG, parece que quem criou as tabelas confundiu os tipos de dados…

              No Oracle o tipo LONG grava textos grandes, não é um tipo numérico como nas outras linguagens de programação.

              Verifique se está correto o tipo desta coluna… Se estiver correto, não seria melhor usar CLOB?

              Se ainda assim tiver que usar o LONG, fique atento às restrições (no 10g… você não disse a versão do teu banco):

              Trigger Restrictions on LONG and LONG RAW Datatypes

              LONG and LONG RAW datatypes in triggers are subject to the following restrictions:

              * A SQL statement within a trigger can insert data into a column of LONG or LONG RAW datatype.
              * If data from a LONG or LONG RAW column can be converted to a constrained datatype (such as CHAR and VARCHAR2), then a LONG or LONG RAW column can be referenced in a SQL statement within a trigger. The maximum length for these datatypes is 32000 bytes.
              * Variables cannot be declared using the LONG or LONG RAW datatypes.
              * :NEW and 😛 ARENT cannot be used with LONG or LONG RAW columns.

              Fonte: http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10795/adfns_tr.htm#1006604

              Então, uma forma de “resolver”:

              http://forums.oracle.com/forums/thread.jspa?threadID=856638

              recomendação real:
              mude o tipo pra CLOB
              mude o tipo pra CLOB
              mude o tipo pra CLOB
              mude o tipo pra CLOB
              😆

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