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