mikestu 0 Denunciar post Postado Julho 28, 2006 viva malta, estou com um problema ao querer que uma coluna esteja dentro de um tamanho considerado para posteriormente inserir na bd, o codigo é o seguinte DECLARE var1 tabela1.coluna1%TYPE; var2 tabela1.coluna2%TYPE; BEGIN var1 := TO_CHAR('zzz'); var2 := TO_CHAR('1234'); IF (LENGTH(TO_CHAR(var2)) BETWEEN 10 AND 40) THEN INSERT INTO tabela1(coluna1, coluna2) VALUES(TO_CHAR(var1), TO_CHAR(var2)); ELSE INSERT INTO tabela2(coluna1, coluna2, coluna3, coluna4, colun5) VALUES(sequencia.NEXTVAL, TO_CHAR('texto1'), TO_DATE(SYSDATE), TO_CHAR('texto2'), TO_CHAR('texto3')); END IF; END; o meu problema é na condição do if...then...else o que esta a acontecer é que independentemente do tamanho de "var2" corre sempre o primeiro insert, ou seja, faz o insert na tabela1. desde ja agradeço a vossa ajuda http://forum.imasters.com.br/public/style_emoticons/default/cry.gif ad augusta per angusta Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 28, 2006 1) para saber o tamanho da coluna você pode usar a tabela dba_tab_columns select data_length from dba_tab_columns where table_name = 'DUAL' and column_name = 'DUMMY' 2) O if pode ser trocado pelo tratamento da seguinte exceção ... begin insert into .... exception when value_error then null; when others then raise; end; ... o problema é que value erro poderia ser em outra coluna que não a de string , poderia ser uma tentativa de por um valor 100 numa coluna numerica de 2(number(2)). Compartilhar este post Link para o post Compartilhar em outros sites