Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/02/2008, 10:49
bransh
 
Fecha de Ingreso: enero-2008
Mensajes: 25
Antigüedad: 16 años, 10 meses
Puntos: 0
Información Re: Que tengo mal en este Procedimiento almacenado ? 8.2

(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

Última edición por bransh; 03/02/2008 a las 10:56