(ahi esta mas bonito
)
Hola, se que es tarde, pero quizas te sirva aun! (soy nuevo en el foro)
Crea una vista con todos los campos de tu consulta:
Código:
CREATE OR REPLACE VIEW miVista AS
SELECT cod_usuario, dni, nombre, apellido_1, apellido_2, fecha_nacimiento,
tusuarios.cod_provincia, tprovincias.provincia, tusuarios.cod_pais,
tpaises.pais, ciudad, codigo_postal, email, clave, telefono_movil,
descripcion, cod_buscar, notificarme, ver_todos
FROM tusuarios INNER JOIN tpaises
ON tpaises.cod_pais = tusuarios.cod_pais
INNER JOIN tprovincias
ON tprovincias.cod_provincia = tusuarios.cod_provincia
;
Y luego en el sp devolve los datos filtrados de la vista:
Código:
CREATE OR REPLACE FUNCTION pDameUsuario(IN pdni bpchar, IN pclave bpchar) RETURNS SETOF miVista AS $$
DECLARE
reg_tabla miVista;
BEGIN
FOR reg_tabla IN
SELECT *
FROM miVista
WHERE DNI = pdni AND CLAVE = pclave
LOOP
RETURN NEXT reg_tabla;
END LOOP;
END;
$$ LANGUAGE 'plpgsql' VOLATILE;
Luego la consulta es simple:
Código:
SELECT *
FROM pDameUsuario('71641951-X', 'micarlito');
Tal cual como cuando se trata de los campos de una tabla.
Es claro que a las vistas les vas a dar las mismas restricciones que les das a las tablas en cuanto a los permisos (una de las razones de usar sp).
Salu2