Pular para o conteúdo

Fóruns SQL e PL/SQL Problema com tamanho de campo CLOB – TEXT Problema com tamanho de campo CLOB – TEXT

#106620
Fábio Prado
Participante

    @leandro,

    É difícil encontrar o erro no seu código, pois não tenho o seu ambiente e nem vou ter tempo hábil p/ analisar o seu problema, portanto, veja o código abaixo, que foi criado e testado (e funcionou) baseado no que eu havia lhe informado, entenda-o e faça as devidas alterações no seu ambiente.


    -- Criando a tabela
    CREATE TABLE TB_TESTE (ID NUMBER, DETAIL CLOB);

    -- Criando a trigger
    create or replace trigger TG_ITEMS BEFORE INSERT ON stbd.tb_teste FOR EACH ROW
    DECLARE
    PRAGMA AUTONOMOUS_TRANSACTION;
    NOVOVALOR VARCHAR2(4000);
    BEGIN
    IF dbms_lob.GETLENGTH(:NEW.DETAIL) > 4000 THEN
    NOVOVALOR := dbms_lob.SUBSTR(:NEW.DETAIL,4000,1);

    INSERT INTO tb_teste (ID,detail) VALUES (:NEW.ID,NOVOVALOR);
    COMMIT;
    RAISE_APPLICATION_ERROR(-20100, 'Valor de detalhes foi truncado p/ 4000 caracteres');
    

    END IF;
    END;
    /

    -- testando a trigger
    declare
    v_detail varchar2(32767);
    begin
    v_detail := 'fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio
    fabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabiofabio';

        insert into tb_teste (id, detail) values (1 , v_detail);        
    

    end;

    []s