DELIMITER $$
DROP FUNCTION IF EXISTS propietario_predio;
CREATE FUNCTION propietario_predio
(predio$ INT)
RETURNS VARCHAR(500)
BEGIN
	DECLARE resultset VARCHAR(500);
	DECLARE predio_$ VARCHAR(8) DEFAULT(SELECT descifrar(predio) FROM predios WHERE id = predio$);
	IF EXISTS (SELECT f.residente FROM familias AS f
		INNER JOIN predios AS p ON f.predio = p.id 
		WHERE descifrar(p.predio) = predio_$ AND f.parentesco = 1 AND f.estado = 11) THEN
		SET resultset := (SELECT CONCAT('PROPIETARIO/ASOCIADO: ', descifrar(r.nombre), ' ', descifrar(r.paterno)) 
			FROM familias AS f 
			INNER JOIN residentes AS r ON f.residente = r.id
			INNER JOIN predios AS p ON f.predio = p.id
			WHERE descifrar(p.predio) = predio_$ AND f.parentesco = 1 AND f.estado = 11);
	ELSE
		SET resultset = 'PROPIETARIO/ASOCIADO: ';
	END IF;
	RETURN resultset;
END
$$

-- >>> registra y/o devuelve id de parentesco
DELIMITER $$
DROP FUNCTION IF EXISTS parentescos;
CREATE FUNCTION parentescos
(parentesco$ VARCHAR(100))
RETURNS INT
BEGIN
	-- variable que retorna y clave
	DECLARE resultset INT;
	DECLARE clave_$ VARCHAR(8);
	-- si existe el parentesco obtiene el id
	IF EXISTS (SELECT id FROM parentescos WHERE clave = parentesco$) THEN
		SET resultset := (SELECT id FROM parentescos WHERE clave = parentesco$);
	ELSE
		SET clave_$ = clave();
		IF NOT EXISTS (SELECT id FROM parentescos WHERE clave = clave_$) THEN
			INSERT INTO parentescos(clave, descripcion, registro)
			VALUES(clave_$, UPPER(parentesco$), NOW());
			SET resultset := (SELECT id FROM parentescos WHERE clave = clave_$);
		ELSE
			SET resultset = 0;
		END IF;
	END IF;
	RETURN resultset;
END
$$
