Hola lista, ante todo gracias por cualquier comentario o sugerencia...
Tengo esta función que tiene como parámetro de entrada un número, y luego
devuelve ese número invertido...ejemplo...entro el 531 y tiene que devolver
el 135, la función o ejercicio tiene como principal características que no
puedo usar ningún tipo de función o tipo de dato para cadena...solo puedo
usar tipos de datos y funciones numéricas...ya la hice...y cuando la
debugeo me funciona bien, pero cuando la ejecuto me devuelve este error:

ERROR:  invalid input syntax for integer: "31.0000000000000000"
CONTEXT:  PL/pgSQL function some_user.reverse_order(integer) line 18 at
assignment

la función es la siguiente...

CREATE OR REPLACE FUNCTION some_user.reverse_order (
  var integer
)
RETURNS integer AS'
DECLARE
var_lgh integer ;
var_div integer :=$1::integer;
var_s integer :=1;
result_e integer:=0;
tf BOOLEAN := true;
var_x integer;
lth integer :=trunc(log($1))+1;
-- variable_name datatype;
BEGIN
if $1>0 then
    BEGIN
            WHILE tf LOOP
            var_x:=lth-var_s;
                var_lgh:=div(var_div,power(10.0,var_x)); -- dividendo
                result_e:=result_e+var_lgh*power(10,var_s-1);
                var_div:=mod(var_div,power(10.0,var_x)); -- resto

                var_s:=var_s+1;
                IF var_s>lth THEN
                tf:=false;
                end if;
            END loop;
        END;
ELSE
    IF $1=0 THEN
    RAISE NOTICE ''The entered parameter is zero, please provide a greater
than zero value.'';
        ELSE
        RAISE EXCEPTION ''The entered parameter is less than zero, please
provide a greater than zero value.'';
        end if;
   end if;
 return result_e::integer;
END;
'LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

una vez más gracias por cualquier comentario...

Carlos

Responder a