Um problema muito comum ao trafegar Number ou Date como caracter refere-se à formatação dos valores. Toda conexão com o banco de dados Oracle cria algumas váriáveis de sessão, que podem variar de uma sessão para outra causando assim erros que podem parecer intermitentes, por exemplo, funciona no Desenvolvimento e não na Homologação ou funciona na máquina de um usuário e na de outro dá problema.
Para evitar esses transtornos, o ideal é forçar o valor a ser atribuído para o formato esperado.
Ex:
declare numero number(10,2); numberoAux varchar2(6) := '1,00'; data date; dataAux varchar2(12) := '10/01/2008'; begin -- Errado numero := numberoAux; -- Dependendo do formato de pontuação da sessão, poderá disparar uma exception -- Certo numero := to_number(numberoAux,'999g999g999g990d00','nls_numeric_characters='',.'''); -- Errado data := dataAux; -- Dependendo do formato de data da sessão, poderá disparar uma exception -- Certo data := to_date(dataAux,'dd/mm/rrrr'); end;
Escrito por fabiosmorais