hola buenas tengo mi trigger en sql que es este:
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION ins_empleados() RETURNS TRIGGER AS $BODY$
BEGIN
--tipo usuario A=admin, gg=gerente general, T=taller, S=secretaria
vrut := NEW.rut_empleado;
vrut1:= substr(NEW.rut_empleado,9,1);
IF(val_rut(vrut,vrut1) = 'NO') THEN
RAISE EXCEPTION'El rut ingresado es inválido';
END IF;
NEW.nombre := LOWER(NEW.nombre);
NEW.apellido := LOWER(NEW.apellido);
NEW.tipo_usuario :='A';
NEW.nombre_usuario :=LOWER(NEW.nombre_usuario);
NEW.password :=LOWER(NEW.password);
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
y llamo a esta otra funcion:
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION val_rut(CHARACTER VARYING)
RETURNS CHAR AS '
DECLARE
rut ALIAS FOR $1;
rut_cero character varying(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
' LANGUAGE plpgsql;
buenola idea de estoe s que al momento de ingresar me valide el rut del empleado, pero me envia un error:
Error de SQL:
ERROR: no existe la función val_rut(character varying, character varying)
LINE 1: SELECT (val_rut( $1 , $2 ) = 'NO')
^
HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede desear agregar conversión explícita de tipos.
QUERY: SELECT (val_rut( $1 , $2 ) = 'NO')
CONTEXT: PL/pgSQL function "ins_empleados" line 8 at IF
y esto ya no me resulta y me estoy resignando y debo hacer esto si o si