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
| ||||
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: |
| ||||
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: |
| ||||
Cita: 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" ,
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 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 |