Tambien lo intenté asi:
Código:
CREATE OR REPLACE FUNCTION PDAMEUSUARIO2(IN pdni bpchar, IN pclave bpchar) RETURNS SETOF record AS
$BODY$
DECLARE reg_fila record;
BEGIN
FOR reg_fila IN 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
WHERE DNI=pdni
AND CLAVE = pclave
LOOP
return next reg_fila;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
El error al llamarla es:
SELECT * FROM PDAMEUSUARIO2('71641951-X', 'micarlito');
ERROR: a column definition list is required for functions returning "record"
Estado SQL:42601
Vale, en este caso entiendo que tendría que poner algo como:
SELECT * FROM PDAMEUSUARIO2('71641951-X', 'micarlito') as tabla(nombrecampo tipovalorcampo, nombrecampo2 tipovalorcampo2, etc...);
Pero... ¿No hay ninguna manera de poder realizar un select * from miPROCEDIMIENTO(parametros) y que me devuelva ya los campos que quiera, sean o no sean de una sola tabla?, vamos que si un procedimiento me devuelve 30 campos, no tenga que poner la definiciación de cada uno de ellos cada vez que queira llamarlo.