Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/03/2011, 14:51
cacr
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: plpgsql: filtrar una consulta según otra consulta

Hola huesos52

Quedando de esta forma:
Código:
CREATE OR REPLACE FUNCTION consultar_menu(id_usuario int) RETURNS SETOF menu_permisos AS $$
 DECLARE
   e boolean;
   r menu_permisos%rowtype;
 BEGIN
   SELECT primerizo INTO e FROM cc1.usuarios WHERE id = $1;
   IF primerizo = true THEN
     RETURN QUERY SELECT * FROM menu_permisos WHERE id_usuario = $1 AND menu.id < 10;
   ELSE
     RETURN QUERY SELECT * FROM menu_permisos WHERE id_usuario = $1;
   END IF;
 END;
$$ LANGUAGE plpgsql;
Obtengo:
Código:
SELECT * FROM consultar_menu(10);ERROR:  no existe la columna «primerizo»
LINE 1: SELECT  primerizo = true
                ^
QUERY:  SELECT  primerizo = true
CONTEXT:  PL/pgSQL function "consultar_menu" line 6 at IF
Sí el IF lo cambio por:
Código:
IF e.primerizo = true THEN
Obtengo:
Código:
SELECT * FROM consultar_menu(10);ERROR:  falta una entrada para la tabla «e» en la cláusula FROM
LINE 1: SELECT  e.primerizo = true
                ^
QUERY:  SELECT  e.primerizo = true
CONTEXT:  PL/pgSQL function "consultar_menu" line 6 at IF
__________________
Gracias de todas todas
-----
Linux!