Quiero hacer una vista que se filtra según un campo, de manera que, en el WHERE, en vez de pasar un elemento fijo, pase una variable según el usuario que se conecta:
Código:
¿cómo es posible?SELECT solicitudviatico.*, (fecha_retorno-fecha_salida+1) AS duracion, (apellido||', '||nombre) AS nomb, funcionarios.apellido, funcionarios.nombre FROM solicitudviatico INNER JOIN funcionarios ON solicitudviatico.cedula = funcionarios.cedula WHERE (substring(codigo_solicitud FROM 6 FOR 3) = '$1') ORDER BY (substring(codigo_solicitud from 10)::int) DESC
Lo que he hecho es una vista sin la clausula WHERE, luego una función (según [1]):
Código:
Para luego lanzar una consulta:CREATE OR REPLACE FUNCTION consulta_viaticos(ngerencia character varying) RETURNS SETOF viaticos_solicitados AS $BODY$ SELECT * FROM viaticos_solicitados WHERE (substring(codigo_solicitud FROM 6 FOR 3) = '$1') $BODY$ LANGUAGE 'sql' VOLATILE;
Código:
Pero esta última consulta no me devuelve nada, dice que no consigue registrosselect consulta_viaticos('GID')
[1]: http://archives.postgresql.org/pgsql...1/msg00483.php