Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

funcion con oracle

Estas en el tema de funcion con oracle en el foro de Oracle en Foros del Web. haber tengo una funcion que se llama valrut y recive un varchar2(12) pero le envio asi el parametro de rut valrut(r_clientes.rut); pero me manda a ...
  #1 (permalink)  
Antiguo 30/06/2006, 21:01
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
Sonrisa funcion con oracle

haber tengo una funcion que se llama valrut
y recive un varchar2(12)

pero le envio asi el parametro de rut
valrut(r_clientes.rut);
pero me manda a decir que no existe
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #2 (permalink)  
Antiguo 01/07/2006, 17:47
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
function validaRut( p_rut varchar2, p_dig varchar2)return varchar2
is
v_rut varchar2(10) := sustr(lpad(p_rut,9,'0'),1,10);
v_res number(2);
v_val varchar2(10);
v_dig varchar2(1);
begin
v_res := 11 - mod(to_number(substr(v_rut,1,1)) * 4 +
to_number(substr(v_rut,2,1)) * 3 +
to_number(substr(v_rut,3,1)) * 2 +
to_number(substr(v_rut,4,1)) * 7 +
to_number(substr(v_rut,5,1)) * 6 +
to_number(substr(v_rut,6,1)) * 5 +
to_number(substr(v_rut,7,1)) * 4 +
to_number(substr(v_rut,8,1)) * 3 +
to_number(substr(v_rut,9,1)) * 2, 11);
if v_res = 10 then
v_dig := 'K';
elsif v_res = 11 then
v_dig := '0';
else
v_dig := ltrim(v_res);
end if;

if v_dig = p_dig_rut then
v_val:='SI';
else
v_val:='NO';
end if;

return v_val;
exception
when others then
return 'NO';
end validaRut;


Y ME MANDA ESTE ERROR
ORA-00900: sentencia SQL no válida
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #3 (permalink)  
Antiguo 01/07/2006, 18:29
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
ya resolvi el problema era una cosa totalmente diferente, que es la persona que mando la funcion es muy chanta asi que habia que arreglar, asi que aqui va la respuesta de un validador de rut chileno ne pl/sql, por si ha alguien le sirve

create or replace function "VALIDARUT"
(p_dig_rut in VARCHAR2,
p_rut in VARCHAR2)
return VARCHAR2
is

v_rut varchar2(10) := substr(lpad(p_rut,9,'0'),1,10);
v_res number(2);
v_val varchar2(10);
v_dig varchar2(1);
begin
v_res := 11 - mod(to_number(substr(v_rut,1,1)) * 4 + to_number(substr(v_rut,2,1)) * 3 + to_number(substr(v_rut,3,1)) * 2 + to_number(substr(v_rut,4,1)) * 7 + to_number(substr(v_rut,5,1)) * 6 + to_number(substr(v_rut,6,1)) * 5 + to_number(substr(v_rut,7,1)) * 4 + to_number(substr(v_rut,8,1)) * 3 + to_number(substr(v_rut,9,1)) * 2, 11);
if v_res = 10 then
v_dig := 'K';
elsif v_res = 11 then
v_dig := '0';
else
v_dig := ltrim(v_res);
end if;

if v_dig = p_dig_rut then
v_val:='SI';
else
v_val:='NO';
end if;

return v_val;
exception
when others then
return 'NO';

end VALIDARUT;
-- validar
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #4 (permalink)  
Antiguo 02/07/2006, 05:03
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 18 años
Puntos: 1
Cita:
Iniciado por FNX_NET
haber tengo una funcion que se llama valrut
y recive un varchar2(12)

pero le envio asi el parametro de rut
valrut(r_clientes.rut);
pero me manda a decir que no existe
A ver si te da un error al llamar a la función te sugiero que postees el error exacto, es decir: ORA-99999 "Descripción del error" ,

Si el error que te da es "la función función se debe declarar" o algo así podría ser que la función no esté compilada o si está en otro esquema o bbdd quizás no tengas permisos o haya qdado descompilada por algún otro motivo.

Asegúrate de que la función está compilada correctamente y dispones los permisos adecuados para poder acceder a ella desde tu esquema actual.

Importante: No crees nunca un objeto con un identificador (o sea el nombre que le das) encerrado entre comillas porque Oracle no se comporta como case-sentive por defecto pero si lo hará si el nombre del objeto , en este caso la función, se encierra entre comillas dobles. Quizás por esto no te deja llamarla.

salu2
__________________
Time is the fire in which we burn
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.