Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2010, 16:56
Avatar de sublevar
sublevar
 
Fecha de Ingreso: diciembre-2010
Mensajes: 29
Antigüedad: 13 años, 11 meses
Puntos: 1
no me carga el trigger en la BD

hola bueno resulta que estoy tratando de colocar esta funcion en mi BD, que es para validar un rut de chile pero la ejecuta y me sale que la consulta se realizó con existo pero la funcion no carga en la bd, la ejecuta de nuevo y me deberia dar el error de que ya esta creada, este es el codigo nose que estoy haceindo mal

CREATE OR REPLACE FUNCTION "digito_verificador"(varchar)
RETURNS char 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;

ALTER FUNCTION "digito_verificador"(varchar) OWNER TO formacio;

CREATE OR REPLACE FUNCTION "valida_rut"(varchar)
RETURNS bool 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;

ALTER FUNCTION "valida_rut"(varchar) OWNER TO formacio;

saludos!