Re: [pgsql-es-ayuda] Función que no me inserta los datos

From: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
To: rperezm(at)uci(dot)cu
Cc: posgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Función que no me inserta los datos
Date: 2009-06-19 13:52:06
Message-ID: 925902880906190652o1ab0a32fp7744d36835da1eef@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 19 de junio de 2009 07:51, Reynier Pérez Mira<rperezm(at)uci(dot)cu> escribió:
> Reynier Pérez Mira wrote:
>>
>> Julio Cesar Rodriguez Dominguez wrote:
>>>
>>> 1.- Las cadenas van encerradas en comillas simples, no doble comillas
>>> 2.- el operador == no existe
>>> 3.- Si lanzas una excepción, se aborta el proceso de la función.
>>
>> He ajustado la función y ahora queda así:
>
> Aquí está el DDL
>
> CREATE OR REPLACE FUNCTION "public"."RealizarPrestamo" ("ID_Material"
> integer, id_prestamo integer, "Tipo" char, "Horario" char,
> "Nombre_Solicitante" char, "Solapin_Solicitante" char,
> "Datos_Material_Prestado" char, "Tipo_Material_Solicitado" char, "Fecha"
> char) RETURNS record AS
> $body$
> DECLARE myvar record;
>  BEGIN
>   SELECT "Material"."estado_del_prestamo" INTO myvar FROM "Material" WHERE
> "Material"."ID_Material" = $1;
>   RETURN myvar;
>     IF (myvar.estado_del_prestamo = 'no_prestado') THEN
>      INSERT INTO "Material Prestamo" VALUES($1,$2);
>      INSERT INTO "Prestamo" VALUES($2,$3,$4,$5,$6,$7,$8,$9,$10);
>      UPDATE "Material" SET "Material".estado_del_prestamo = "prestado";
>   END IF;
>  END
> $body$
> LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>
> Notas:
> 1. Si pongo comillas simples, por ejemplo:
> SELECT 'Material'.'estado_del_prestamo' INTO myvar FROM 'Material' ....
> SELECT ´Material´.´estado_del_prestamo´ INTO myvar FROM ´Material´ ....
>
> Me devuelve un error (ya lo puse en el correo anterior) y no me deja
> ejecutar la función.
>
> 2. Cuando ejecuto la función (tal y como está arriba) la salida del editor
> es la siguiente:
>
> Query OK (0.06 sec)
> Return Value: (no_prestado)
>
> pero por alguna razón no entra a la condicional.
>
> ¿Alguna idea de por que no inserta ni actualiza los datos en las tablas?
>

ese return antes del if, no debe ir ahí, ya que al llegar a ese punto
la función termina. Pasalo hasta abajo despues del end if.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Hernández 2009-06-19 14:17:31 Re: Select filtrando filas repetidas.
Previous Message Sergio Gabriel Rodriguez 2009-06-19 13:17:11 Re: Cambiar Directorio Data