Re: Problema con IF NOT FOUND en función plpgsql

From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>
Cc: "Lista Ayuda Pgsql" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problema con IF NOT FOUND en función plpgsql
Date: 2006-04-21 00:13:35
Message-ID: c2d9e70e0604201713p22d63f5ak6910554ec974ab89@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> [...]
> > que pasa si ejecutas? no sera que si esta regresando un registro? y
> > lo que ocurre es que el valor de cupo efectivamente es NULL?
> >
> > SELECT cupo FROM actividad WHERE id = 4;
>
> test=# SELECT cupo FROM actividad WHERE id = 4;
> cupo
> ------
>
> (1 row)
>

si esta devolviendo una fila y por lo tanto FOUND esta siendo seteado a TRUE...

en lugar de

IF NOT FOUND THEN
usa
IF cupos IS NULL THEN

> La última versión de la función es ésta con idéntico resultado:
>
> DECLARE
> cupos INTEGER;
> BEGIN
> SELECT INTO cupos cupo FROM actividad WHERE id = $1; // Cupo para TODOS
> IF NOT FOUND THEN
> SELECT INTO cupos cupo FROM "cupoActividadPerfil" WHERE actividad_id = $1
> AND perfil_id = $2; // Cupos para algunos
> END IF;
> RETURN cupos;
> END;
>
> Esa actividad (id = 4) no tiene cupo máximo, pero no se pueden aceptar mas de
> 5 alumnos (perfil 7 = "alumnos") en la misma. Si la actividad tiene cupo no
> nulo, es para todos... eso es lo que controlo primero y ésta no tiene ningún
> cupo (es decir en éste caso "cupo IS NULL"). Entonces me fijo si tiene un cupo
> para el perfil informado (7 = alumnos) y eso es lo que hago en la segunda
> consulta. En éste caso, la actividad 4 no tiene mas lugar para el perfil 7,
> osea, me debería devolver 0. Saludos y nuevamente muchas gracias, espero que
> se entienda.
> -
> -------------------------------------------
> Sebastián Villalba
> sebastian(at)fcm(dot)unc(dot)edu(dot)ar
> -------------------------------------------
>
>

--
Atentamente,
Jaime Casanova

"What they (MySQL) lose in usability, they gain back in benchmarks, and that's
all that matters: getting the wrong answer really fast."
Randal L. Schwartz

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message CANDIDO MANUEL ALVAREZ DIEGUEZ 2006-04-21 06:55:52 unsubscribe
Previous Message Leonel Nunez 2006-04-20 23:37:42 Re: Es posible un Link entre Oracle y Postgresql?