18/12/2010, 18:50
|
| | | Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 11 meses Puntos: 1 | |
Respuesta: no me carga el trigger en la BD bueno sigo con esta funcion sin resultados ya descubrí donde me almace las funciones y que me crea 2 pero ahora tengo el drama de que no puedo hacer la llamada esta son mis funciones
CREATE OR REPLACE FUNCTION digito_verificador(character varying)
RETURNS character AS
$BODY$
DECLARE
rut ALIAS FOR $1;
rut_cero varchar(8);
valor int;
BEGIN
valor := 0;
rut_cero := lpad(rut,8,'0');
valor := valor + (substring(rut_cero,8,1)::int8)*2;
valor := valor + (substring(rut_cero,7,1)::int8)*3;
valor := valor + (substring(rut_cero,6,1)::int8)*4;
valor := valor + (substring(rut_cero,5,1)::int8)*5;
valor := valor + (substring(rut_cero,4,1)::int8)*6;
valor := valor + (substring(rut_cero,3,1)::int8)*7;
valor := valor + (substring(rut_cero,2,1)::int8)*2;
valor := valor + (substring(rut_cero,1,1)::int8)*3;
valor := valor % 11;
IF valor =1 THEN
RETURN 'K';
END IF;
IF valor =0 THEN
RETURN '0';
END IF;
IF valor>1 AND valor<11 THEN
RETURN (11-valor)::char;
END IF;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION digito_verificador(character varying) OWNER TO postgres;
CREATE OR REPLACE FUNCTION valida_rut(character varying)
RETURNS boolean AS
$BODY$
DECLARE
rutfull ALIAS FOR $1;
rutfull_cero varchar(9);
rut varchar(8);
dv char;
BEGIN
IF rutfull IS NULL THEN
RETURN TRUE;
END IF;
rutfull_cero := lpad(rutfull,9,'0');
rut:= substr(rutfull_cero,0,9);
dv := substr(rutfull_cero,9,1);
IF digito_verificador(rut)=upper(dv) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION valida_rut(character varying) OWNER TO postgres;
y hago la llamada con este trigger pero no me funca
CREATE OR REPLACE FUNCTION validacionRut()
RETURNS trigger AS
$BODY$
declare validaRut varchar(9);
BEGIN
select rut from persona into validaRut;
if(valida_rut(validaRut)= false) then
raise exception 'rut invalido';
end if;
RETURN NEW;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION validacionRut() OWNER TO postgres;
si alguien me da una mano seria de mucha ayuda
saludos! |