Saludos
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:
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
¿cómo es posible?
Lo que he hecho es una vista sin la clausula WHERE, luego una función (según [1]):
Código:
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;
Para luego lanzar una consulta:
Código:
select consulta_viaticos('GID')
Pero esta última consulta no me devuelve nada, dice que no consigue registros
[1]:
http://archives.postgresql.org/pgsql...1/msg00483.php