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-19 04:36:58
Message-ID: c2d9e70e0604182136n438555eekdfdf2b9dffb50c1b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 4/18/06, Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar> wrote:
> Hola a todos. Les muestro con un ejemplito lo que necesito, creo que está todo
> bien y aún asi no funciona:
>
> postgres=# CREATE TABLE foo (id INTEGER, nombre VARCHAR(50));
> CREATE TABLE
> postgres=# INSERT INTO foo VALUES (1,'Algún nombre');
> INSERT 0 1
> postgres=# CREATE OR REPLACE FUNCTION prueba(integer) RETURNS integer AS $$
> postgres$# DECLARE
> postgres$# valor INTEGER := 33;
> postgres$# BEGIN
> postgres$# SELECT INTO valor id FROM foo WHERE id = $1;
> postgres$# IF NOT FOUND THEN
> postgres$# RETURN valor;
> postgres$# END IF;
> postgres$# RETURN valor;
> postgres$# END;
> postgres$# $$ LANGUAGE plpgsql IMMUTABLE SECURITY DEFINER;

esta funcion no deberia ser declarada IMMUTABLE, porque accesa a la
base de datos, algo que no debe hacer *ninguna* funcion que sea
IMMUTABLE... (no tiene nada que ver con tu duda, por eso no voy a
hacer mucho comentario sobre eso ;)

> CREATE FUNCTION
> postgres=# SELECT * FROM prueba(1);
> prueba
> --------
> 1
> (1 fila)
>
> postgres=# SELECT * FROM prueba(12);
> prueba
> --------
>
> (1 fila)
>
> Aquí debería devolverme el valor 33 o yo estoy haciendo muy mal?. Saludos...

No, porque estas haciendo "SELECT INTO valor id" al hacer eso cuando
no regreso ninguna fila le asigno NULL valor...

--
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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-04-19 04:42:18 Re: Eliminar procesos lanzados por un cliente
Previous Message Jaime Casanova 2006-04-19 04:30:31 Re: sinonimos?