CREATE OR REPLACE FUNCTION concatena_apellido(vid INTEGER,opcion1 varchar(25),opcion2 varchar(25)) RETURNS varchar AS $$
DECLARE
vnombre varchar(50) := (SELECT nombre FROM propietario WHERE id = vid);
nombrecompleto varchar := vnombre || ' ' || opcion1;
BEGIN
 /* Muestra el nombre del propietario concatenado con la primera opción */
RAISE NOTICE 'El nombre del propietario: %, concatenado con el apellido: %, es => %',vnombre, opcion1, nombrecompleto;

    DECLARE
    nombreanidado varchar := vnombre || ' ' || opcion2;
    BEGIN
    /* Muestra el nombre del propietario concatenado con la segunda opción */
    RAISE NOTICE 'El nombre del propietario: %, concatenado con el apellido: %, es => %',vnombre, opcion2, nombreanidado;
    /* Muestra el nombre del propietario concatenado con la primera opción */
    RAISE NOTICE 'El nombre del propietario: %, concatenado con el apellido: %, es => %',vnombre, opcion1, nombrecompleto;
    END;
 /* Intentamos mostrar el valor de una variable que no es visible (nombreanidado), es decir, está fuera de su ámbito */
RAISE NOTICE 'El nombre del propietario: %, concatenado con el apellido: %, es => %',vnombre, opcion2, nombreanidado;
RETURN nombrecompleto;
END;
$$ LANGUAGE plpgsql;