Olá pessoal.
Eis que após alguns anos, ao fazer uma manutenção na base Oracle, me deparo novamente com a situação deste tópico. Assim sendo, por uma questão de honra, decidi resolver o problema definitivamente
. Não testei a solução com package porque não se enquadraria para mim no formato de consulta que estou tentando executar. Enfim, a solução é mais simples do que pensava... corrigindo apenas a solução com "function":
Selecionar tudo
CREATE OR REPLACE FUNCTION "LYCEUM"."RETORNA_NUMERICO"
(VALOR_ENVIADO IN VARCHAR2)
RETURN NUMBER
IS VALOR_RETORNADO NUMBER;
begin
SELECT TO_NUMBER(VALOR_ENVIADO) INTO VALOR_RETORNADO FROM DUAL;
-- A linha dá para simplificar ainda mais, colocando simplesmente
-- VALOR_RETORNADO := TO_NUMBER(VALOR_ENVIADO);
RETURN(VALOR_RETORNADO);
EXCEPTION
WHEN OTHERS THEN
RETURN(-1);
end;
Observem que declarei a variável "Valor_Retornado" somente como number, sem escala.
A versão do Oracle é a 9.2.
[]´s